llvdl / slim-router-js
JavaScript 的 Slim 路由器
Requires
- slim/slim: ^3.9
This package is not auto-updated.
Last update: 2024-09-29 05:09:15 UTC
README
Generate Slim Router path URLs using Javascript.
本包提供用于在 命名路由 中生成 URL 的 JavaScript 代码,适用于 Slim 框架
var url = Slim.Router.pathFor('hello', {'name': 'World'});
Slim.Router
对象提供了 pathFor()
和 relativePathFor()
方法,它们与 PHP 中的 Slim\Router::pathFor()
和 Slim\Router::relativePathFor()
方法功能相同。
安装
使用 composer 安装此包
composer require llvdl/slim-router-js
然后添加一个路由以生成 Slim.Router
对象的 JavaScript 代码
$app = new \Slim\App(); // Add router javascript $app->get('/router.js', function($req, $res, $args) { $routerJs = new \Llvdl\Slim\RouterJs($this->router); return $routerJs->getRouterJavascriptResponse(); });
注意: router.js
被内置的 PHP 服务器视为静态文件。可以使用路由脚本,或者使用不带扩展名的模式,例如 '/router'。有关更多信息,请参阅 PHP 文档。
最后,在 HTML 文件中导入 router.js
文件
<html> <head> <script src="/router.js"></script> </head> </html>
用法
为了使路由在 JavaScript 中的 Slim.Router
中可用,请给它添加一个名称
$app->get('/hello/{name}', function($req, $res) { // ... })->setName('hello');
注意: 未命名的路由在 JavaScript 中的 Slim.Router
中不可用。
在 HTML 文档中导入 router.js
。然后可以使用 Slim.Router.pathFor
生成命名路由的 URL。
<html> <head> <script src="/router.js"></script> </head> <body> <input id="name" type="text"/> <button id="submit-button">Go</button> <script> document.getElementById('submit-button').on('click', function() { var name = document.getElementById('name').value; var url = Slim.Router.pathFor('hello', {name: name}); alert(url); }); </script> </body> </html>
请参阅此存储库中的 example/
文件夹中的示例脚本。
RouterJs 方法
RouterJs 是生成 JavaScript 代码的 PHP 类。它提供了以下方法
-
__constructor(\Slim\Router $router, bool $minified)
: 构造函数默认返回压缩的 JavaScript。将
$minified
设置为 false 以返回未压缩的 JavaScript 代码。 -
getRouterJavascriptResponse(): Slim\Response
返回用于操作的 HTTP 响应
-
getRouterJavascript(): string
生成 JavaScript 代码
Slim.Router 方法
Slim.Router
对象提供了以下方法
pathFor(name, data, queryParams)
relativePathFor(name, data, queryParams)
这些方法与 PHP 中的 Slim\Router::pathFor()
和 Slim\Router::relativePathFor()
方法功能相同。
测试
存储库包含 PHP 代码的 PHPUnit 测试。要运行这些测试
phpunit -c app/phpunit.xml
没有为 JavaScript 代码自动进行测试。已经手动测试,并在以下浏览器中使用 示例代码 进行测试,发现其工作正常
- Chrome 和 Chromium
- Firefox
- Microsoft Edge
- Microsoft Internet Explorer 11
待办事项
本节列出了可以进行的某些未来功能改进
-
过滤公开的路由,例如通过路由参数
-
缓存
请注意,可以使用中间件来缓存响应。
-
允许将其包含在 JavaScript 打包器中,例如 Webpack