【问题标题】:Versioning a JavaScript single page web app? (querystring)对 JavaScript 单页 Web 应用程序进行版本控制? (请求参数)
【发布时间】:2011-12-06 10:41:37
【问题描述】:

我有一个带有一些静态路由的单页应用程序,例如:

example.org/#!/tools/
example.org/#!/stories/story-1/

这些是不需要任何版本控制的路由示例。 “页面”要么存在,要么已被重定向,要么不存在。

但是我有其他资源想要版本化(因为它们可以有内部状态 - 用 > 10 个参数的查询字符串表示):

example.org/#!/tools/population-tool/ + ?a=b&c=d[...]

因为查询字符串参数可能会随着时间而改变(因为该工具可能允许更多选项),所以我想在这些“页面”中添加一个版本参数:

example.org/#!/tools/population-tool/ + ?v=1.1&a=b&c=d[...]

这样当用户在没有任何参数的情况下导航到 URL 时,会自动添加默认状态和版本:

example.org/#!/tools/population-tool/ =>
example.org/#!/tools/population-tool/ + version + default state

如果用户决定分享/收藏此 URL,版本参数将始终允许我将参数从一个版本重新映射到另一个版本。

  1. 您能提出更好的方法吗?
  2. 也许版本应该是所有路由的 url 的一部分?

    example.org/#!/v1/tools/population-tool/

  3. 或者也许版本化查询字符串是错误的方法 共?也许我应该有一种方法来猜测 根据给定的参数正确的“API”?

谢谢。

【问题讨论】:

    标签: javascript web-applications backbone.js query-string versioning


    【解决方案1】:

    根据参数猜测正确的 API 可能很乏味,并且会导致路由子系统出现不必要的复杂性。在 URL 中明确指定版本信息会更清晰。

    现在,要遵循的方法是 1 还是 2,很大程度上取决于个人喜好。在我看来,这取决于您的应用程序版本对最终用户的感知程度。如果您的最终用户没有感知到前端的变化(即,如果您遵循 MVC 架构并且仅更改模型层而视图层保持不变,则更推荐方法 1。好像是重要的是让用户知道他正在使用哪个版本,或者最终用户可见的用户界面是否因版本而异,那么方法 2 是一个更好的选择,因为它将版本信息放在 url 中的显眼位置。

    另一种看待它的方式是询问应用程序状态是否在版本之间不同。一个 url(没有查询参数)代表应用程序状态,如果答案是真的,那么应该遵循第二种方法。但是,如果版本信息是从主应用程序代码中抽象出来的,并且仅与某些抽象的子部分相关,例如。只应遵循少数模型类然后方法 1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 2019-06-14
      • 2013-06-11
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多