helthe/turbolinks

Helthe Turbolinks 组件

4.0.0 2020-12-03 04:02 UTC

This package is auto-updated.

Last update: 2024-08-29 03:41:56 UTC


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 HttpFoundationHttpKernel 组件的 PHP 项目集成的基本包。

您可以通过使用提供的遵循 Stack 规范的 中间件 或将提供的 事件监听器 添加到 HttpKernel 事件调度器中来实现。

而不是将编译好的 JavaScript 复制到您的项目中,尝试使用您的项目工具来复制它们。您应该始终可以使用 composer 脚本钩子,如 post-install-cmdpost-update-cmd 作为后备。

集成列表

兼容性

涡轮链接JavaScript设计用于与任何完全支持pushState及其相关API的浏览器一起工作。这包括Safari 6.0及以上版本(但不包括Safari 5.1.x!)、IE10以及最新的Chrome和Firefox浏览器。

请注意,由于实例化周期的变化,现有的JavaScript库可能并非全部与Turbolinks直接兼容。您可能需要修改它们以与Turbolinks的新事件集一起工作。有关帮助,请参阅Turbolinks兼容性项目

附加资源

如需有关javascript库及其使用的更多信息,请参考turbolinks项目。

错误

有关错误或功能请求,请创建一个Issue