2024年3月31日发(作者:)

pjax是什么

pjax是jquery的一个插件,它使用ajax和pushState两个技术改善用户的网

页浏览体验。具体来说,当用户使用a标签切换页面时,可以实现局部刷新的技

术。

pjax主要做两方面的事儿:

1. 用户点击链接发送ajax请求,服务器得到请求返回需要填充的HTML片段,

客户端得到HTML片段然后插入更新区域

2. 页面填充完毕后,使用pushState更新当前的URL

这个过程能实现页面局部刷新,比传统的页面切换刷新的体验好一些,因为:

1. 只下载需要的HTML页面片段,没有JS、CSS解析

2. 如果服务端配置了正确的pjax请求,则只返回要更新的HTML片段,客户

端只更新必要的内容,避免了页面重新渲染的过程。

如何使用

1. 客户端

客户端设置分两步:

1. 下载插件,包括jquery1.8+,或者npm安装,这部分参考文档,不赘述。

2. 初始化pjax插件,并有条件的拦截a标签跳转。

初始化

$.

下面代码表示:当selector被点击时,执行ajax请求,并将返回的HTML字符

串填充在container标记的位置。

$(document).pjax(selector, [container], options)

参数说明

selector:click事件的选择器

container:pjax容器id

options :配置参数

pjax options

key

timeout

push

replace

version

scrollTo

type

dataType

container

url

target

fragment

default

650

true

false

description

ajax请求如果超时将触发强制刷新

使用 [pushState][] 在浏览器中添加导航记录

是否使用replace方式改变URL

返回的HTML片段字符串最大缓存数

当前pjax版本

当页面导航切换时滚动到的位置. 如果想页面切换

不做滚动重置处理,请传入false.

使用ajax的模板请求方法,参考 $.ajax

模板请求时的type,参考 $.ajax

内容替换的CSS选择器

maxCacheLength 20

0

"GET"

"html"

用于ajax请求的url,可以是字符串或者返回字符

串的函数

link

eventually the relatedTarget value for pjax

events

从服务端返回的HTML字符串中子内容所在的CSS选

择器,用于当服务端返回了整个HTML文档,但要求

pjax局部刷新时使用。

可以使用下面的方式动态设置options:

$.t = 1200

初始化一般的做法是做好HTML结构,有条件的触发pjax跳转请求:

$(document).pjax('[data-pjax] a, a[data-pjax]', '#pjax-container')

2. 服务端

服务端也比较简单,监听HTTP的header中有X-PJAX的ajax请求,如果有则返

回HTML片段,而不是整个HTML。