devmatic / laravel-instantclick
Laravel 5的InstantClick中间件
v1.1.0
2016-02-26 08:43 UTC
Requires
- php: ^5.5.0|^7.0
- illuminate/http: ^5.1
- illuminate/support: ^5.1
- symfony/css-selector: ^2.7|^3.0
- symfony/dom-crawler: ^2.7|^3.0
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
This package is not auto-updated.
Last update: 2024-09-20 17:58:58 UTC
README
InstantClick是一个插件,通过利用Ajax来加速页面加载时间,使得网站中的链接瞬间跳转。
InstantClick使用pushState和Ajax(合称为pjax),仅替换head中的body和title。
Devmatic是一家致力于简化开发者生活的网站开发公司。您可以在我们的网站上找到所有项目的概述。
Ajax本身具有两个很好的特性
-
Your browser doesn’t have to throw and recompile scripts and styles on each page change anymore. -
You don’t get a white flash while your browser is waiting for a page to display, making your website feel faster.
此包提供了一个中间件,可以返回插件期望的响应。
视频教程及概述
安装与使用
- 您可以通过composer安装此包
$ composer require devmatic/laravel-instantclick
- 接下来,您必须将
\Devmatic\InstantClick\Middleware\FilterIfInstantClick中间件添加到kernel中。
// app/Http/Kernel.php ... protected $middleware = [ ... \Devmatic\InstantClick\Middleware\FilterIfInstantClick::class, ];
- 将包含的instantclick.js复制到您的公共资产文件夹中,然后在布局文件中包含它
<script src="/path/to/instantclick.js" data-no-instant></script> <script data-no-instant>InstantClick.init();</script>
- 请参阅InstantClient文档以了解有关InstantClient选项和工作原理的更多信息。
重要提示
请使用包含的instantclick.js文件,因为我已经对其进行修改,添加了$xhr.setRequestHeader(‘X-INSTANTCLICK’, true),以便中间件能够识别InstantClient请求并向其提供适当的响应。
工作原理
提供的中间件提供了Instant Click插件期望的服务器行为
设置了一个X-INSTANTCLICK请求头,以区分InstantClick请求和正常的XHR请求。在这种情况下,如果请求是InstantClick,我们将跳过布局html,只渲染body的内部内容。
变更日志
请参阅CHANGELOG以获取更多最近更改的信息。
测试
$ composer test
贡献
请参阅CONTRIBUTING以获取详细信息。
致谢
此包中的中间件最初由Freek Van der Herten编写,用于返回Pjax jQuery插件期望的响应。我编辑了他的中间件和InstantClick插件,使其适用于Laravel。其原始代码可在GitHub上的此存储库中找到。
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。