Node.js 服务器有两个角色:
- 前缀为 /api 的路由上的 RESTFul API
- 在其他路线上呈现网站页面(/ /plans /features /terms ...)
目前,我的所有页面都会呈现一个“正在加载页面...”,并与 Backbone.router 启动时替换 DOM 的 Backbone 应用程序结合在一起。
我想在用户到达页面时在服务器端构建网站页面,并让 Backbone 在用户在网站上导航时处理导航的下一部分。
我知道如何在服务器端执行此操作,但在客户端加载已构建 DOM 的页面时,Backbone.router 会加载并替换 DOM,因为它不知道视图已预加载。
客户端如何修复?
Code:
路由器:http://pastebin.com/aUuXaVm9 http://pastebin.com/aUuXaVm9
首页视图:http://pastebin.com/qS1tHUfq http://pastebin.com/qS1tHUfq
条款查看:http://pastebin.com/et1mrbLK http://pastebin.com/et1mrbLK
更新:新代码:https://gist.github.com/mathieug/d50c861e63dd647f1c2b https://gist.github.com/mathieug/d50c861e63dd647f1c2b
现在我需要在第一次加载时调用 runSlider 方法。
当您启动历史记录时,请确保通过{silent: true}
作为让 Backbone 知道您已经加载了完整页面的选项。这将防止路由器在视图已预加载(第一次)时替换 DOM。
来自Backbone.js 文档 http://backbonejs.org/#History:
如果服务器已经渲染了整个页面,并且您不希望在启动 History 时触发初始路由,请传递silent: true
.
所以,你的代码应该是这样的:
Backbone.history.start({pushState: true, silent:true});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)