版本化JavaScript单页面Web应用程序? (请求参数)

时间:2011-12-06 10:41:38

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

我有一个单页应用程序,其中包含一些静态路由,例如:

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. 也许版本应该是所有路由的网址的一部分?

      

    example.org /#!/ V1 /工具/人口工具/

  3. 或许对查询字符串进行版本控制是错误的方法 共?也许我应该有一种猜测方法 正确的“API”基于给出的参数?

  4. 感谢。

1 个答案:

答案 0 :(得分:0)

从参数中猜出正确的API可能很繁琐,并且会导致路由子系统中出现不必要的复杂情况。在URL中明确指定版本信息要清晰得多。

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

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