求nodejs可以使用pjax的模板
发布于 7 年前 作者 tomoya92 2890 次浏览 来自 问答

已经尝试了ejs,是可以实现的,其它模板没有试过

目前在用nunjucks,这个模板以前版本有个express-pjaxify可以实现pjax无刷新更新页面,现在nunjucks,express,pjax版本都高了,不能用了,作者也不更新了

其它的模板没试过,在这求一下折腾过的小伙伴分享一下折腾的经验

10 回复

又折腾了一下,如果要使用pjax就要放弃模板里的layout,其它没有办法(也可能我比较菜,没找到其它办法)定义一个模板页面layout.html里面写上页面头,页尾,中间就用pjax来加载,这样就可以了,用任何模板都可以,只是layout没法用了,比较可惜

可以看下koahub-simple-cms

来自 KoaHub.js

@liygheart 使用了pjax和layout

来自 KoaHub.js

@einsqing

if (this.isPjax()) {
  this.state.layout = false;
} else {
  this.state.layout = 'admin/layout';
}

跟我用ejs是一样的用法 koahub-simple-cms 用的模板是handlebars,应该可以通过设置layout:true/false来控制是否使用模板吧?nunjucks这样的模板没办法控制呀 不过它们的原理还是我上面说的那样,先加载一个空模板,然后具体页面用pjax来更新数据

模版我只知道jade 和ejs, 或者react~!除了ejs靠近点,都是js式的html封装,感觉颠覆习惯了

@nasaplayer nodejs web框架里的模板用的不都是js模板吗

@liygheart 也可以外部返回大块包裹数据的html块。。。我感觉 模版引擎还是tp的最贴合html的写法了

@nasaplayer 对,我现在就是外部返回大块包裹数据的html块,页头页尾都在里面

@liygheart 一次性的东西可以这样搞(不过需要再次绑定事件)~经常变的如何整理得看得爽,我还没有找到办法 。。目前常用拼接字符串的方法…

function setLi(user_id){ var html =’’; html+=’<li id=“user_’+user_id+’”>’ html+=’<label>’ html+=’<input name=“userList” type=“radio” value="’+user_id+’" >’; html+=user_id html+=’</label>‘ html+=’</li>' return html; }//setLi

@nasaplayer 这种写法就算了,我说的 返回大块包裹数据的html块 是服务端渲染好的html块,再次用pjax渲染到页面对应位置里去

回到顶部