6

我一直使用 Backbone 的路由 (#!/blah)

但我意识到,为了被 Google 索引,您需要提供该网站的非 JavaScript 版本。

我不喜欢写两次代码。所以,我宁愿构建一个多页应用程序,而不是一个单页网络应用程序。

Backbone.js 为我提供了“结构”,因此我的 javascript 不会变成乱七八糟的东西。但是,我对如何使用 Backbone 构建多页应用程序一无所知。

您是否在每个页面渲染中都包含 main.js 文件?路线呢?你怎么处理?你如何处理模块化等?

我希望有一个关于如何使用 Backbone 构建多页 javascript 应用程序的教程。

4

2 回答 2

2

做这样的事情有很多考虑因素,但这里有两个关键:

服务页面

您可能希望让您的 Web 服务器将所有内容路由到服务相同的静态页面(假设它是静态资产)。这意味着一切都http://yourdomain.com/*将服务/var/www/yourdomain.com/index.html。加载静态页面后,该页面上的 JS 将根据 url 决定要做什么。

推送状态

要进行路由,您仍然可以使用主干路由,但不要使用 hashbangs(#!/blah样式 url)。例如,参见http://backbonejs.org/#History。这将允许您导航到真实的 URL,而实际上不需要刷新页面。如果浏览器不支持 pushState,一切仍然有效,但它会重新加载页面。

于 2013-02-05T23:24:54.360 回答
0

@Jamie Wong 的回答让您分得一杯羹。通过使用 pushState 而不是基于哈希的 URL,Google 应该将每个路由视为不同的页面。但是,由于我假设每条路线的内容是动态生成的,因此我不清楚 Google 是否会抓取所有内容。正如上面提到的@Domenic,谷歌肯定有访问动态内容的能力,但问题是:

1)他们可以访问多少?

2) 他们是否尝试尽可能多地访问所有站点或可能只访问 Facebook 等大型数据站点?

您可以尝试为每个视图提供默认数据,然后在动态的、基于用户行为的东西中分层。Backbone 称之为自举。 http://backbonejs.org/#FAQ-bootstrap

于 2013-04-25T16:51:12.303 回答