【问题标题】:Keeping state when rendering page from the server side从服务器端渲染页面时保持状态
【发布时间】:2013-01-03 09:55:59
【问题描述】:
我目前正在使用backbone.js 构建一个单页应用程序
为了保持所有应用程序页面可访问和可抓取,我确保服务器端在直接访问页面时也可以呈现页面。
问题如下:
当 pushState 不可用时,它使用当前 URL 启动路由器(例如,如果我使用 http://example.com/example 访问 url,路由器将在该 url 之上构建哈希片段)
所以:
- 有没有办法处理这个问题(除了重定向使用)
- 如果您在 JS 后立即进行重定向(使用 pushState 功能检测),您仍然会遇到 url 没有井号的问题。
一般来说,有没有更好的方法来设计这种应用程序?
谢谢!
【问题讨论】:
标签:
backbone.js
pushstate
singlepage
【解决方案1】:
如果 SEO 友好的浏览对您很重要,我认为不断发展的共识是 pushstate 或什么都不是(即降级 web 1.0 并一起放弃 hash-bang 路由)。
我不使用 Backbone.js 而只使用 PJAX 的原因之一是 pushstate 和 DOM 渲染时间非常好,您可以使用很少的 JS 和 hash-bang 成为单页路由一直是相当骇人听闻的。
因此,一个选项是不一起使用 Backbone 的路由器,而让 PJAX(或 DJAX 或类似的东西)之类的东西做路由工作,让 Backbone 只做内页事件/渲染的东西(即验证表单、模式窗口, 等等..)。