Hexo 集成 Pjax 实现网站无刷新加载
pjax 是如何工作的?
pjax是对ajax + pushState的封装,让你可以很方便的使用pushState技术。
同时支持了缓存和本地存储,下次访问的时候直接读取本地数据,无需在次访问。
并且展现方式支持动画技术,可以使用系统自带的动画方式,也可以自定义动画展现方式。
访问地址:pjax
使用方法
Pjax能够实现页面的局部刷新而非整体重载资源,在一定程度上能够减少网站反复加载重复资源,从而优化访问体验。
博主目前使用的是Butterfly主题,而最新版Butterfly主题已经将该教程方案集成在主题中。只需在主题配置文件中搜索pjax,将其enable参数设置为true即可开启。
重载第三方js
在魔改主题时,肯定会不可避免的添加一系列第三方js,此时就会遇到切换页面后,由于通过 Pjax切换的页面并没有完全刷新,浏览器不会将网页从头执行一遍,因此有些JS将不会生效。
得益于Butterfly已经将解决方案集成在[Blogroot]\themes\butterfly\layout\includes\third-party\pjax.pug文件下。
1 | document.querySelectorAll('script[data-pjax]').forEach(item => { |
这个函数会对在script标签中添加了data-pjax属性的的js,在页面切换后执行重载,达到局部刷新的效果。
所以我们要做的事情十分简单,给这些js引入的位置添加data-pjax属性即可。
1 | inject: |
特别留意
pjax、pwa、gulp堪称BUG御三家,请在使用前做好心理准备。
参考文章:Hexo异步加载方案
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 竹山一叶!
评论