可能重复:
Reusing backbone views/routes on the server when using Backbone.js pushstate for seo/bookmarking
我正在使用 Backbone.js 和其他一些模块来处理单页应用方法。我的目标:
该网站必须是SEO友好的
服务器引导html代码到客户端和存储在JSON模型中的数据。
子序列操作全部由Javascript处理(例如渲染新屏幕,使用Backbone路由器更改URL)。
我的问题是:如何构建服务器以与每个路由器网址上的Javascript保持一致并保持 DRY ?
例如:如果用户转到wwww.mysite.com
然后点击某个链接转到www.mysite.com/page/2
,则必须与让他前往www.mysite.com/page/2
相同1}}直接在第一次加载时。
这似乎是一个老话题,但我找不到任何有关在服务器端处理此问题的最佳方法的可靠资源,而无需在Javascript中重复模板代码。
我想的一个选项是将后端拆分为Node.js,另一个服务器只处理API。 Node.js服务器以某种方式共享模板构造代码作为Javascript前端
无论如何,如果这不是提出这样问题的正确场所,我很乐意听到一些建议和道歉。
答案 0 :(得分:1)
我会将节点服务器视为数据的REST接口。然后我会处理客户端的所有其他内容:我可以使用require.js加载模板,使用jade之类的模板插件,使用Backbone.Router完成所有路由,然后使用Backbone访问我的模型和集合。同步方法(如collection.fetch()
。)
例如,当用户访问“mysite.com/#page/2”时,我可以让我的Backbone路由器加载并显示页面上的任何模板。如果我碰巧需要在该页面上显示的产品列表,那么我可以让我的product
集合执行product.fetch()
。这将向“/ products”发送GET请求 - 或product.url
中指定的任何URL。然后,我的节点服务器将使用我的集合所属的视图可用于呈现自身的产品对象数组进行响应。