背景

我正在研究一个教育性的JavaScript应用程序/站点(SPA),最终将具有成千上万个我希望使其可抓取的动态URL。



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

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


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

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

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

i18n可能也应该由node.js处理?这样,传递给搜寻器的内容已经翻译好了?


这是使单页应用程序版本化和可爬网的可行方法吗?
我现在正在使用Backbone.js,您将添加什么来帮助上述工作?

最佳答案

1)地狱号。 (它可以正常工作,但是使用hashbangs从头开始设计应用程序是一个坏主意)

2)node.js和骨干网是很好的组合。就个人而言,我喜欢在服务器上路由/模板化表达。

-反对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(或其他任何具有正常url的网站):https://chrome.google.com/webstore/detail/oikegcanmmpmcmbkdopcfdlbiepmcebg

15个参数是否绝对必要?将内容参数(页面,国家/地区)放在url中,将表示形式(即:sortby = author)放在查询字符串中。

响应“您仍然对哈希标签序列化感到困惑”,我给出了以下信息:

每条路线都应指向有效的资源位置。即:/ v1 / page / denmark / some-slug-for-post应该是资源位置,当您将其更改为新的post / page时,它也应该是资源位置。我的意思是,如果您不能使用url将该页面添加为书签,则实现会被破坏。

另外,您是否打算断开每个版本的所有链接?我不确定为什么要在网址中包含该版本。

我希望这有帮助。

09-20 22:56