javascript - 单页应用程序的版本控制和路由?

标签 javascript node.js backbone.js

背景

我正在开发一个教育性 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 处理?这样,传送到爬虫的内容就已经翻译过了?

  1. 这是使单页应用程序版本化且可抓取的可行方法吗?
  2. 我现在正在使用 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/

相关文章:

javascript - 在 Node 6 中使用 crypto.pbkdf2Sync 返回与 Node 4 不同的哈希值

javascript - 为什么 Backbone.View 对象仍然保留在内存中?

javascript - 如何仅在获取所有数据后才将模型传递给 View ?

javascript - 如何使用 jquery mobile 编辑 RSS 提要

javascript - 使用 python 从输入字段复制文本并将其保存到变量中

javascript - 如何在文件选择中读取(图像数据/尺寸/文件大小/名称)多个图像?

backbone.js - 使用主干设置下拉选择值

javascript - 用于扩展框的 float 箭头(jQuery)

mysql - 使用node.js将数据从html表单发送到mysql表

javascript - 如何从我的 redux 操作向 GraphQL 服务器发出请求?