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

Progressive enhancement - Node.js, Backbone.js

本文关键字:js Backbone Node 增强 渐进式      更新时间:2023-09-26

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

  • 基于/API前缀路由的RESTFul API
  • 呈现其他路线的网页(//计划/功能/条款…)

目前,我所有的页面都呈现一个"Loading page…",并结合了Backbone应用程序,该应用程序在主干加载时取代了DOM。路由器开始。

我想建立网站页面的服务器端,当用户到达一个页面,让骨干处理导航的下一部分,当用户在网站上导航。

我知道如何做它的服务器端,但客户端,当一个页面加载了DOM已经构建,主干。路由器加载并替换DOM,因为它不知道视图已经预加载了。

如何在客户端修复它?

代码:

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

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

  • 条款视图:http://pastebin.com/et1mrbLK

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

当你启动历史,确保传递{silent: true}作为一个选项,让骨干知道你已经加载了一个完整的页面。这将防止路由器在视图已经预加载(第一次)时替换DOM。

从Backbone.js文档:

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

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

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