单页面应用的版本控制和路由?

时间:2011-11-07 11:14:53

标签: javascript node.js backbone.js

背景

我正在开发一个教育性的JavaScript应用程序/网站(SPA),它最终将拥有1000个我想要抓取的动态网址。


我正在研究如何实施版本控制,路由和seo(和i18n)
我的一般想法是使用hashbangs并拥有如下资源:

example.com/#!/v1?page=story1&country=denmark&year=1950

此处的“page”参数决定了需要加载哪些控制器/视图,后续参数可以指示控制器加载相应的内容。

版本化参数可以通过替换url的“v1”部分来处理 - 并且具有特定的路由处理程序映射每个版本的弃用参数。

通过让node.js或其他后端提供内容的“转义片段”版本,可以改善 SEO

i18n 也可能由node.js处理?这样,传递给爬虫的内容已经被翻译了吗?

  1. 这是一种使单页面应用程序版本化和可抓取的可行方法吗?
  2. 我现在正在使用Backbone.js,您可以添加什么来帮助解决上述问题?

2 个答案:

答案 0 :(得分:2)

1)地狱没有。 (好吧它可以工作,但从头开始用hashbangs设计你的应用程序是一个坏主意)

2)node.js和backbone是一个很好的组合。就个人而言,我喜欢在服务器上进行路由/模板化。

- 反对hashbangs的论点:网上有很多好的信息我会遵从它们。

此处:http://isolani.co.uk/blog/javascript/BreakingTheWebWithHashBangs

此处:http://www.pixelflips.com/blog/do-clean-urls-still-matter/

这个精彩的图书馆:https://github.com/browserstate/History.js/

来自该库的此Wiki页面:https://github.com/browserstate/history.js/wiki/Intelligent-State-Handling

请查看此chrome扩展程序,该扩展程序将使用该库ajax​​ StackOverflow(或具有普通网址的任何其他网站):https://chrome.google.com/webstore/detail/oikegcanmmpmcmbkdopcfdlbiepmcebg

绝对需要15个参数吗?将内容参数(页面,国家/地区)放在URL和表示中(即:sortby = author)在查询字符串中。

响应“你仍然坚持使用哈希标签序列化”我给出了这个:

每条路线都应指向有效的资源位置。 ie:/ v1 / page / denmark / some-slug-for-post应该是一个资源位置,当你把它改成一个新的帖子/页面时,它也应该是一个资源位置。我所说的是,如果你不能使用url为页面添加书签,那么实现就会被破坏。

另外,您打算打破每个版本的所有链接吗?我不确定你为什么要把这个版本包含在网址中。

我希望这会有所帮助。

答案 1 :(得分:0)

在回答第1项时,要求所有“页面”都有唯一的网址,无需JavaScript即可查找和查看。

你必须制作一个robots.txt,列出你所有的唯一网址,或者在某个地方有一个网站地图,以便抓取工具找到所有网址

在这种情况下,我不确定SEO究竟是什么意思。您似乎建议您为抓取工具提供与浏览器不同的内容。通常不是一个好主意,除非你的网站如此动态,没有别的办法。