背景
我正在开发一个教育性 JavaScript 应用程序/站点 (SPA),它最终将包含 1000 个动态 URL,我希望这些 URL 可供抓取。
我现在正在研究如何实现版本控制、路由和 seo(以及 i18n)。
我的总体想法是使用 hashbangs 并拥有如下资源:
example.com/#!/v1?page=story1&country=denmark&year=1950
这里的“page”参数决定了需要加载哪些 Controller / View ,后面的参数可以指示 Controller 加载相应的内容。
版本控制然后可以通过替换 url 的“v1”部分来处理参数 - 并且有一个特定的路由处理程序映射每个版本的弃用参数。
SEO 将通过让 node.js 或其他后端提供内容的“转义片段”版本来改进。
i18n 也应该由 node.js 处理?这样,传送到爬虫的内容就已经翻译过了?
- 这是使单页应用程序版本化且可抓取的可行方法吗?
- 我现在正在使用 Backbone.js,您会添加什么来帮助解决上述问题?
最佳答案
1)该死的。 (它可以工作,但是从头开始使用 hashbangs 设计你的应用程序是个坏主意)
2) node.js 和 backbone 是一个很好的组合。就我个人而言,我喜欢在服务器上使用 express 进行路由/模板化。
--反对 hashbangs 的论点:网络上有太多好的信息,我会尊重他们。
此处:http://isolani.co.uk/blog/javascript/BreakingTheWebWithHashBangs
此处:http://www.pixelflips.com/blog/do-clean-urls-still-matter/
还有这个美妙的图书馆:https://github.com/browserstate/History.js/
以及来自该库的维基页面:https://github.com/browserstate/history.js/wiki/Intelligent-State-Handling
然后检查这个 chrome 扩展,它将使用该库对 StackOverflow(或任何其他具有正常 url 的站点)进行 ajax:https://chrome.google.com/webstore/detail/oikegcanmmpmcmbkdopcfdlbiepmcebg
15个参数是绝对必要的吗?将内容参数(页面、国家/地区)放在 url 中,将展示性参数(即:sortby=author)放在查询字符串中。
为了回应“你仍然坚持哈希标签序列化”,我给出了这个:
每条路线都应该指向一个有效的资源位置。即:/v1/page/denmark/some-slug-for-post 应该是一个资源位置,当您将其更改为新的帖子/页面时,它也应该是一个资源位置。我的意思是,如果您不能使用 url 来为页面添加书签,那么这个实现就失败了。
此外,您是否打算断开与每个版本的所有链接?我不确定您为什么要在网址中包含版本。
希望对您有所帮助。
关于javascript - 单页应用程序的版本控制和路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8035674/