pjax存在的问题:
所有的js文件必须一次加载完毕(后面就是根据路由从服务端拉取dom然后进行替换了吧?),并且是放在header中的。这样子的话所有模块(用户登录注册,购物车啊,商品列表啊等等)都是已经加载的并且可用的,这样模块多了之后,各个模块都在内存中,那么各个模块相互影响的机会就多了。
缓存DOM有时候会带来意外的影响,比如我在A页面把某个checkbox选中了,然后跳转到B页面,但是跳转回A页面的时候我希望A页面的checkbox的状态还是原始的未选中的状态,貌似可以配置禁用dom cache可以解决这个问题?
综上所述,我觉得pjax并不是一种很好的方案。
不知道大家对这种技术有什么看法?
你的第一个问题,说明没有用js 模块化来做,才会导致相互影响。可以搜搜common js, AMD 等模块化技术。
你的第二个问题,pjax在页面跳转的时候,state是会变的,有类似statechang的事件提供(具体的事件名称,看你用什么插件或者原生而定,一搜就知道了)。有了这个事件,就可以在页面跳转的时候做些事情了。