渐进增强 - Node.js,Backbone.js

时间:2014-07-06 22:43:06

标签: javascript node.js backbone.js progressive-enhancement

node.js服务器有两个角色:

  • 带有前缀/ api
  • 的路由上的RESTFul API
  • 在其他路线上呈现网站页面(/ /计划/功能/条款......)

目前,我的所有网页都会显示一个"正在加载页面..."结合Backbone应用程序,在Backbone.router启动时替换DOM。

我想在用户到达页面时构建服务器端的网站页面,并在用户在网站上导航时让Backbone处理导航的下一部分。

我知道如何在服务器端但客户端执行它,当页面加载了已构建的DOM时,Backbone.router加载然后替换DOM,因为它不知道视图已经预加载。 / p>

如何修复客户端?

代码:

更新:新代码:https://gist.github.com/mathieug/d50c861e63dd647f1c2b
现在我需要在第一次加载时调用runSlider方法。

1 个答案:

答案 0 :(得分:2)

当您启动历史记录时,请务必通过{silent: true}作为选项让Backbone知道您已经加载了完整的页面。这将阻止路由器在视图已预加载(第一次)时替换DOM。

来自Backbone.js docs

  

如果服务器已经渲染了整个页面,并且您不希望在启动历史记录时触发初始路由,请传递silent: true

因此,您的代码应如下所示:

Backbone.history.start({pushState: true, silent:true});