在 Laravel 5 中集成 Pjax 实现无刷新加载页面的扩展包 —— Laravel Pjax
来源:互联网 发布:新型网络诈骗手段莆田 编辑:程序博客网 时间:2024/06/05 00:09
pushstate + ajax =pajax
一个分页查询的插件
1、简介
Pjax 是一个 jQuery 插件,其作用是使用 ajax 来加速页面加载时间,工作原理是只从服务器获取指定 HTML 片段,然后客户端使用获取到的内容更新局部页面。
LaravelPjax 扩展包将 Pjax 集成到 Laravel 中,实现原理是提供一个中间件,返回 Pjax 期望的响应内容。
2、安装
通过 Composer 安装扩展包:
$ composer require spatie/laravel-pjax
接下来需要在 Kernel.php
中注册中间件,这里我们将其注册到web中间件组:
// app/Http/Kernel.phpprotected $middlewareGroups = [ 'web' => [ ... \Spatie\Pjax\Middleware\FilterIfPjax::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 设置:
...<div class="main-content" id="pjax-container"> @yield('content')</div><!-- JavaScripts --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>{{-- <script src="{{ elixir('js/app.js') }}"></script> --}}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.pjax/1.9.6/jquery.pjax.min.js"></script><script> $(document).pjax('a', '#pjax-container'); $(document).on("pjax:timeout", function(event) { // 阻止超时导致链接跳转事件发生 event.preventDefault() });</script></body></html>
这样我们就可以在浏览器中访问进行测试了:
你会发现在切换登录/注册按钮时页面不会发生跳转而直接进行刷新。
注:该扩展包会设置一个
X-AJAX
请求头以区别 pjax 请求和普通的 XHR 请求。在这种情况下,如果请求是 pjax,我们会跳过页面布局部分 HTML,只渲染页面主体部分内容。
Laravel 缓存失效
我们使用 Laravel Elixir 来管理前端缓存失效,你可以使用这种方法来让 Pjax 的缓存失效 —— 只需要引入elixir
方法作为x-pjax-version
meta 的 content 即可:
<meta http-equiv="x-pjax-version" content="{{ elixir('css/app.css') }}">
如果是多个文件的话这使用:
<meta http-equiv="x-pjax-version" content="{{ elixir('css/app.css') . elixir('css/app2.css') }}">
这样的话,如果前端缓存失效,那么 Pjax 的缓存随之自动失效。
链接 : http://laravelacademy.org/post/4973.html
- 在 Laravel 5 中集成 Pjax 实现无刷新加载页面的扩展包 —— Laravel Pjax
- laravel无刷新加载之pjax
- pjax实现无刷新
- PJAX实现页面无刷新跳转及加载数据(浏览器可回退前进)
- Codeigniter整合PJAX(pushstate+ajax)实现无刷新页面
- thinkphp+Pjax Demo 实现无刷新改变URL的方式
- pjax实现页面局部刷新跳转
- 在 Laravel 中使用 Laravel Searchy 扩展包实现基于数据库的轻量级搜索功能
- 在 Laravel 中使用 Laravel Searchy 扩展包实现基于数据库的轻量级搜索功能
- 在 Laravel 中使用 Laravel Searchy 扩展包实现基于数据库的轻量级搜索功能
- Pjax实现网页局部刷新
- 异步加载界面pjax 刷新界面里的部分内容
- Pjax
- pjax
- 在THinkPHP中使用pjax
- PJAX的实现与应用
- PJAX的实现与应用
- Laravel 在views中加载公共页面怎么实现
- JAVASE中级笔记
- Android UI系列-----长度单位和内外边距
- GitHub 中国区前 100 名到底是什么样的人?
- org.apache.ibatis.builder.IncompleteElementException: Could not find result map
- 图片间有空隙的解决方法
- 在 Laravel 5 中集成 Pjax 实现无刷新加载页面的扩展包 —— Laravel Pjax
- ViewPager实现图片自动轮播无限循环(完美流畅版)
- 合并(序列)流
- 糍粑大叔的独游之旅-u3d中2D轮廓的生成(中)
- Android自定义SurfaceView——实现画板功能
- Spark源码解读(3)——从集群启动到Job提交
- Emag eht htiw Em Pleh
- C#的枚举转换、应用例子
- Python机器视觉编程常用数据结构与示例