渐进式增强 – Node.js,Backbone.js

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

  • 具有前缀/ api的路由上的RESTFul API
  • 呈现其他路线上的网页(/ /计划/function/条款…)

目前,我的所有页面都会显示一个“加载页面…”,与Backbone.router启动时取代DOM的Backbone应用程序结合在一起。

我想在用户到达一个页面的时候在服务器端build立网站页面,当用户在网站上浏览时让Backbone处理导航的下一个部分。

我知道如何在服务器端但在客户端执行加载已经构build的DOM的页面时,Backbone.router加载并replaceDOM,因为它不知道视图已经预加载。

如何解决它的客户端?

码:

  • 路由器: http : //pastebin.com/aUuXaVm9

  • 主页视图: http : //pastebin.com/qS1tHUfq

  • 术语视图: http : //pastebin.com/et1mrbLK

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

当您启动历史logging时,请务必传递{silent: true}作为一个选项让Backbone知道您已经加载了一个完整的页面。 这将阻止路由器在视图已被预加载(第一次)时replaceDOM。

来自Backbone.js文档 :

如果服务器已经呈现整个页面,并且您不想在启动历史logging时触发初始路由,请传递silent: true

所以,你的代码应该是这样的:

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