Laravel 5 中集成 Pjax 实现无刷新加载页面案例
时间:2022-06-25 00:39:47 编辑:袖梨 来源:一聚教程网
pjax 是 HTML5 pushState 以及 Ajax 两项技术的简称,综合这两个技术可以实现在不刷新页面的情况下载入 HTML 到当前网页,带给你超快速的浏览器体验
1、简介
Pjax 是一个 jQuery 插件,其作用是使用 ajax 来加速页面加载时间,工作原理是只从服务器获取指定 HTML 片段,然后客户端使用获取到的内容更新局部页面。
Laravel Pjax 扩展包将 Pjax 集成到 Laravel 中,实现原理是提供一个中间件,返回 Pjax 期望的响应内容。
2、安装
通过 Composer 安装扩展包:
$ composer require spatie/laravel-pjax
接下来需要在 Kernel.php 中注册中间件,这里我们将其注册到web中间件组:
// app/Http/Kernel.php
protected $middlewareGroups = [
'web' => [
...
SpatiePjaxMiddlewareFilterIfPjax::class,
],
...
];
3、使用
该扩展包提供的中间件会处理服务端返回的内容并将其转化为 Pjax 插件期望服务端返回的内容。
这里我们以 php artisan make:auth 命令生成的默认视图文件为例演示其使用,首先我们修改路由文件 routes.php:
Route::group(['middleware' => 'web'], function () {
Route::get('/', function () {
return view('welcome');
});
Route::get('/home', 'HomeController@index');
Route::auth();
});
然后我们还需要修改默认布局文件 layouts/app.blade.php,添加 Pjax 设置:
...
@yield('content')
{{-- --}}
这样我们就可以在浏览器中访问进行测试了:
Pjax 测试页面
你会发现在切换登录/注册按钮时页面不会发生跳转而直接进行刷新。
注:该扩展包会设置一个X-AJAX请求头以区别 pjax 请求和普通的 XHR 请求。在这种情况下,如果请求是 pjax,我们会跳过页面布局部分 HTML,只渲染页面主体部分内容。
Laravel 缓存失效
我们使用 Laravel Elixir 来管理前端缓存失效,你可以使用这种方法来让 Pjax 的缓存失效 —— 只需要引入elixir方法作为 x-pjax-version meta 的 content 即可:
css/app.css') }}">
如果是多个文件的话这使用:
这样的话,如果前端缓存失效,那么 Pjax 的缓存随之自动失效。
相关文章
- 《弓箭传说2》新手玩法介绍 01-16
- 《地下城与勇士:起源》断桥烟雨多买多送活动内容一览 01-16
- 《差不多高手》醉拳龙技能特点分享 01-16
- 《鬼谷八荒》毕方尾羽解除限制道具推荐 01-16
- 《地下城与勇士:起源》阿拉德首次迎新春活动内容一览 01-16
- 《差不多高手》情圣技能特点分享 01-16