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

lor*_*non 50 javascript jquery url-routing backbone.js knockout.js

我正在设计一个基于浏览器的单页浏览器.

JQuery已经在我的应用程序中使用.我目前正计划KnockoutJS用于数据绑定和UI管理.但是我Backbone.js过去曾经使用过,我对控制器层提供的路由设施印象非常深刻.

我还研究了一些基于JQuery的解决方案,比如用于客户端路由的pathjs.

如果有人能够为选择合适的路由系统提供建议和指导,那就太好了.

我不愿意使用Backbone.js而不是KnockoutJS因为优秀的数据绑定设施KnockoutJS.

lor*_*non 34

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

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

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


Spy*_*cho 14

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

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

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

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

Mozilla有一些关于它的文档.


She*_*har 12

还有优秀的导演