helthe / turbolinks
Helthe Turbolinks 组件
Requires
- php: ^7.1||^8.0
- symfony/http-foundation: ^4.3.4||^5.0
Requires (Dev)
- phpunit/phpunit: ^7.5.15||^8.4||^9.3.3
- symfony/http-kernel: ^4.3.4||^5.0
Suggests
- symfony/http-kernel: Required for usage with the Symfony HttpKernel Component
README
Helthe Turbolinks 是将 rails turbolinks 钩子直接移植到使用 Symfony HttpFoundation 组件 的项目。
版本
以下 gems 的当前版本被使用
- turbolinks: v5.0.0
性能
Turbolinks 使得您的 Web 应用中的链接更快。它不是在每次页面更改时让浏览器重新编译 JavaScript 和 CSS,而是保持当前页面实例活跃,并仅替换 head 中的 body 和标题。
性能改进将取决于您使用的 CSS 和 JavaScript 的数量。当使用大量的 JavaScript 和 CSS 时,您可以获得高达 2 倍的改进。您可以在这里找到 rails 基准测试。
安装
使用 Composer
手动
在您的 composer.json
中添加以下内容
{ "require": { // ... "helthe/turbolinks": "~4.0" } }
使用命令行
$ composer require 'helthe/turbolinks=~4.0'
用法
使用 turbolinks 需要同时使用 JavaScript 库并修改 PHP 响应,以便它可以由 turbolinks 正确处理。
PHP
有多种方法可以装饰 PHP 响应以供 turbolinks 使用。
手动
您可以使用 Turbolinks
对象手动装饰响应。
<?php use Helthe\Component\Turbolinks\Turbolinks; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; // ... $turbolinks = new Turbolinks(); $turbolinks->decorateResponse($request, $response);
事件监听器
您可以向传递给 HttpKernel 的调度器添加事件监听器。
<?php use Helthe\Component\Turbolinks\EventListener\TurbolinksListener; use Helthe\Component\Turbolinks\Turbolinks; // ... // Symfony\Component\EventDispatcher\EventDispatcherInterface $dispatcher->addSubscriber(new TurbolinksListener(new Turbolinks()));
堆栈中间件
您可以使用提供的 Stack 中间件来装饰响应。
<?php use Helthe\Component\Turbolinks\StackTurbolinks; use Helthe\Component\Turbolinks\Turbolinks; // ... $app = new StackTurbolinks($app, new Turbolinks());
JavaScript
每个脚本的原生 coffeescript 版本和编译版本都可用于使用。
使用 turbolinks.js
要启用 turbolinks,您只需要将编译好的 turbolinks JavaScript 添加到布局中的 <head>
部分。
将 turbolinks 集成到其他 PHP 项目中
该组件的目标是提供用于与其他使用 Symfony HttpFoundation 或 HttpKernel 组件的 PHP 项目集成的基本包。
您可以通过使用提供的遵循 Stack 规范的 中间件 或将提供的 事件监听器 添加到 HttpKernel 事件调度器中来实现。
而不是将编译好的 JavaScript 复制到您的项目中,尝试使用您的项目工具来复制它们。您应该始终可以使用 composer 脚本钩子,如 post-install-cmd
和 post-update-cmd
作为后备。
集成列表
- HeltheTurbolinksBundle (Symfony 2)
- Frenzy Turbolinks Package (Laravel)
- Silex Turbolinks (Silex)
兼容性
涡轮链接JavaScript设计用于与任何完全支持pushState及其相关API的浏览器一起工作。这包括Safari 6.0及以上版本(但不包括Safari 5.1.x!)、IE10以及最新的Chrome和Firefox浏览器。
请注意,由于实例化周期的变化,现有的JavaScript库可能并非全部与Turbolinks直接兼容。您可能需要修改它们以与Turbolinks的新事件集一起工作。有关帮助,请参阅Turbolinks兼容性项目。
附加资源
如需有关javascript库及其使用的更多信息,请参考turbolinks项目。
错误
有关错误或功能请求,请创建一个Issue。