llvdl/slim-router-js

JavaScript 的 Slim 路由器

1.1.1 2017-12-27 21:42 UTC

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