首选客户端路由解决方案?

时间:2011-06-11 11:00:36

标签: javascript jquery backbone.js url-routing knockout.js

4 个答案:

答案 0 :(得分:34)

经过一番探索后,我找到了解决方案。 @Eisenhauer Backbone的路由设施很棒,但如果我不使用Backbone会怎样。 正如我在我的问题中所概述的那样,我已经在使用KnockoutJS,它为我提供了客户端MVVM模型,因此在同一页面中添加额外的MVC实现并不是一个好主意。

对于寻找独立路由解决方案的人来说,pathjs是一个简单而优雅的解决方案。

更灵活,功能强大且独立的路由解决方案是http://millermedeiros.github.com/crossroads.js/提供的Crossroads.js。 它的文档非常精确,功能非常强大,因此可以适应任何要求。

答案 1 :(得分:14)

你可以使用History API而不是hashbang方法吗?

  • 它允许您操纵显示给用户的URL。
  • 这意味着后退/前进工作明智。
  • 明智地为该页面添加书签。
  • 在性能方面更好,因为如果用户刷新页面(或从外部源点击指向页面的链接),则会首次加载正确的内容,而不是必须加载空白页面然后获取正确的内容内容通过AJAX。

缺点是旧浏览器不支持它。你可以依靠hashbang方法(如果你真的需要)。我不知道有任何现有的框架可以做到这一点。我宁愿依靠不动态加载内容(即用户点击链接时的整页重新加载)。历史API将得到越来越广泛的支持,因此这个“问题”将随着时间的推移而减少。

这是一个带有一些文档的working example。在地址栏中,看起来页面正在加载“旧学校”(整页刷新),但如果您查看控制台(Firebug,Chrome开发工具),您可以看到通过AJAX请求获取内容

Mozilla对此有一些docs

答案 2 :(得分:12)

还有优秀的Director

答案 3 :(得分:4)

Crossroads.js似乎是最好的之一。它的一个主要优点是,它不依赖于window.location进行路由。它很轻巧,因为它坚持只做路由和路由。

您可能想尝试的其他人:finch.jsdavisjs(基于pushState,以便在JS失败时可以使用现有链接作为后备)

追加更新: 2015年3月30日 - 我去年年底搬到了AngularJS。提供最好的JQ交换机,有很多模块,比如内置路由。