node+pjax实现不刷新跳转

做前端的都知道如果通过a标签去访问跳转到某一个页面,浏览器会自动刷新。那么如何实现不刷新跳转?

html5的出现让我们可以实现不刷新跳转页面。主要使用的方法:history.pushState(data,str,url) 。不知道的百度 h5  history api。

现在不用自己来造轮子,我们直接引入jquery.pjax。使用方法 https://github.com/defunkt/jquery-pjax/

先来看我的前端代码:

//$('document').pjax('html元素','需要跟新的容器')  给html元素绑定pjax传输的方法
 $(document).pjax('.header a,.container a,#divSearchPanel input', '.container', {
     fragment: '.container',
     timeout: 1500
 });

 //用ajax来实现
 //pjax请求带pjax header
 $.ajax({
     url: a.attr('href')ajaxUrl,
     type: 'GET',
     headers: {'x-pjax': true},
     success: function (data) {
         //localStorage ...
         history.pushState('', '', url);
         //containor 填充
     }
 });

 

这个时候所有通过a标签发送的请求header里面都会出现x-pjax:true;

前端部分完成,开始来部署后台;

正常的路由部分省略,直接用express安装就好

var pjax = require('express-pjax');
app.use(pjax());
router.get('/',function (req,res) {
    if (req.headers['x-pjax']) {//如果x-pjax为true使用res.renderPjax()返回页面
        res.renderPjax('msg');
    }
    res.render('msg');
});

这样看来,其实并没有想象那么复杂,我想,不是对IE789有特别要求的,都可以考虑使用,为了兼容也可以先判断是否支持pushState,决定是否将链接转化为pjax;这种事前端做的太多了,何乐而不为呢?  

更多原创文章访问:meetqy.com 

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值