3

可能重复:
在使用 Backbone.js pushstate 进行 seo/书签时重用服务器上的主干视图/路由

我正在使用Backbone.js和一堆其他模块来处理单页应用程序方法。我的目标:

  1. 该网站必须是 SEO 友好的

  2. 服务器将 html 代码引导到客户端和存储在 JSON 模型中的数据。

  3. 子序列操作全部由 Javascript 处理(例如渲染新屏幕,使用 Backbone 路由器更改 url)。

我的问题是如何构建服务器以与每个路由器 url 上的 Javascript 保持一致并保持干燥

例如:如果用户去wwww.mysite.com然后点击某个链接去www.mysite.com/page/2,它必须和他www.mysite.com/page/2在第一次加载时直接去一样。

这似乎是一个老话题,但我找不到任何关于在服务器端处理此问题的最佳方法的可靠资源,而无需在 Javascript 中重复模板代码。

我正在考虑的一个选择是将后端拆分为 Node.js 和另一台服务器以仅处理 API。Node.js 服务器以某种方式共享模板构造代码作为 Javascript 前端

无论如何,如果这不是提出此类问题的正确地方,我很乐意听到一些建议和道歉。

4

1 回答 1

1

我会将我的节点服务器视为我的数据的 REST 接口。然后我将在客户端处理其他所有事情:我可以使用require.js和像 jam 这样的模板插件加载模板,使用 Backbone.Router 进行所有路由,然后使用 Backbone.sync 方法访问我的模型和集合(比如collection.fetch()。)

例如,当用户访问“mysite.com/#page/2”时,我可以让我的 Backbone 路由器加载并显示页面上的任何模板。如果我碰巧需要在该页面上显示一个产品列表,那么我可以让我的product收藏做一个product.fetch(). 这会将 GET 请求发送到“/products”——或者在product.url. 然后,我的节点服务器将响应一组产品对象,我的集合所属的视图可以用于呈现自身。

于 2012-12-18T21:51:00.893 回答