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

背景

我正在研究一个教育性的JavaScript应用程序/网站(SPA),最终将有1000个dynamicurl,我想抓取。


我正在研究如何实现版本控制,路由和seo(和i18n)
我的一般想法是使用hashbangs和像这样的资源:

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

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

然后可以通过replaceurl的“v1”部分来处理参数的版本控制 ,并为每个版本都有一个特定的路由处理程序映射不推荐使用的参数。

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

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

  1. 这是一个可行的方法来使单页面应用程序版本化和可抓取?
  2. 我现在使用Backbone.js,你会添加什么,以帮助上述?

1)地狱号 (它可以工作,但从hashbangs从头开始devise你的应用程序是一个坏主意)

2)node.js和backbone是一个很好的组合。 我个人喜欢在服务器上表示路由/模板。

– 反对hashbangs的论据:networking上有这么多好的信息,我会顺从他们。

这里: 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(或任何其他网站与普通的URL)使用该库: https : //chrome.google.com/webstore/detail/oikegcanmmpmcmbkdopcfdlbiepmcebg

15个参数是绝对必要的吗? 将内容参数(页面,国家)放在查询string中的url和显示(即:sortby = author)中。

在回应“你仍然与哈希标签序列化卡住”我给这个:

每条路线都应指向有效的资源位置。 即:/ v1 / page / denmark / some-slug-for-post应该是一个资源位置,当你改变它到一个新的post / page时,它也应该是一个资源位置。 我所说的是,如果你不能使用url来书签页面,比实现是打破。

另外,你打算打破每个版本的所有链接? 我不知道你为什么包括在url中的版本。

我希望这有帮助。

在回答数字1时,要求所有的“页面”都有一个唯一的URL,可以在没有JavaScript的情况下find和查看。

您必须制作一个robots.txt,其中列出了您所有的唯一url,或者在某处放置了网站地图,以便抓取工具可以find所有url

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