如何解决首选的客户端路由解决方案?
|解决方法
经过一些探索之后,我找到了解决方案。
@Eisenhauer Backbone的路由功能很棒,但是如果我不使用Backbone怎么办。
正如我在问题中概述的那样,我已经在使用KnockoutJS,它为我提供了客户端MVVM模型,因此在同一页面中放置其他MVC实现并不是一个好主意。
对于寻求独立路由解决方案的人们来说,pathjs是一种简单而优雅的解决方案。
Crossroads.js是一种更灵活,功能强大且独立的路由解决方案,可从http://millermedeiros.github.com/crossroads.js/获得。
它有很好的文档记录,功能强大,因此可以适应任何要求。
, 您可以使用History API而不是hashbang方法?
它允许您操纵显示给用户的URL。
这意味着后退/前进可以明智地进行。
将页面添加为书签可以合理地工作。
在性能方面会更好,因为如果用户刷新页面(或从外部源单击指向页面的链接),则将首先加载正确的内容,而不必加载空白页面然后获取正确的内容通过AJAX获得内容。
缺点是较旧的浏览器将不支持它。如果确实需要,您可以使用hashbang方法。我不知道有任何现成的框架可以做到这一点。我宁愿不使用动态加载内容(即当用户单击链接时重新加载整个页面)。历史API将得到越来越广泛的支持,因此该“问题”将随着时间的流逝而减少。
这是一个带有一些文档的工作示例。从地址栏中,看起来页面正在加载“旧学校”(刷新整个页面),但是如果您查看控制台(Firebug,Chrome开发工具),则可以看到内容是通过AJAX请求。
Mozilla有一些关于它的文档。
, 也有优秀的导演
, Crossroads.js似乎是周围最好的之一。它的一个主要优点是,它不依赖window.location进行路由。它是轻量级的,因为它坚持只进行路由和单独进行路由。
您可能想尝试的其他工具:finch.js,
davisjs(基于pushState,以便在JS失败时可以将现有链接用作后备)
附加更新:2015年3月30日-
去年下半年,我搬到了AngularJS。通过JQ传递最佳的交换机,它具有很多模块,例如内置路由。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。