我正在重新设计我上个世纪的应用程序(请注意,效果很好),重新开始的机会让我调查了几个方面。这个问题是关于既可以使用现代 HTML5 历史功能又可以不使用现代 HTML5 历史功能的架构。
假设我有以下带有嵌入式 gewgaws 的 URI 结构 bloggish 应用程序
http://example.com --> alias for /latest
http://example.com/latest --> alias for /Resource2
http://example.com/Resource1
http://example.com/Resource2
http://example.com/Resource2#chart
http://example.com/Resource2#chart?a=life's-answer&b=42
http://example.com/about
我希望可以通过 URI 访问屏幕上可以看到的每个资源或方面。例如,“about”文本被加载到基本模板(imagine handlebarsjs
)中,并在用户单击“about”链接时显示在一个小弹出窗口中。但是,如果文本直接加载到浏览器中,用户也应该能够看到相同的文本,例如,如果http://example.com/about
通过电子邮件发送给某人并且该人点击了它。
同样的事情可能http://example.com/Resource2#chart?a=life's-answer&b=42
会使用.a
b
query_string
这意味着我应该有一种机制,无论请求什么资源,首先加载一个空模板,然后进行 Ajax 调用以检索请求的资源,甚至是其自定义状态。然后我应该使用历史 API 的魔力来更改 URI。
或者,我应该拥有每个资源的静态服务器版本,以防直接请求。事实上,无论如何,我可能应该拥有每个资源的服务器版本,以防某些 luddite 想要在没有 JavaScript 的情况下使用该应用程序。
两个问题——
对于如何处理上述问题,是否有一些一般性建议?是否有任何一个(或两个)JavaScript MV* 框架比其他框架做得更好?
PS:尽管我很喜欢这个想法和meterojs
正在努力实现的目标,但我现在还没有准备好搭上我的马车nodejs
。我需要在服务器端做很多事情,最好用更传统的东西来提供服务,这种语言已经存在了足够长的时间,可以围绕它建立一个完整的生态系统。