为什么要使用JavaScript路由?

7

似乎有许多库和包(Crossroads.js等)支持此JavaScript路由功能,但我很难理解这是有价值的情况。

有人愿意从头到尾介绍这个有用的情况吗?

我的背景是ASP.NET(Web Forms)编程和一些业余JavaScript / jQuery。


你是在讨论图表中的线路路由吗? - Diodeus - James MacFarlane
不,更多地是像Crossroads.js这样的包所提供的功能。 - skeej
1
Javascript现在正在不断发展,有很多趋势是为了使它在大规模应用中更加舒适,因为它目前还不够完善。虽然会有一些稳定的模式和最佳实践,但像crossroads.js这样的东西却是开创新领域的先驱。这些都是非常有创意的先驱。 - vinczemarton
2个回答

5
它为你提供了处理客户端行为的选项,而无需像处理服务器端路由时重新加载整个页面。它开放了更加响应和交互式的设计可能性,在路由变化时不必重新加载整个页面,而是可以仅重新渲染给定路由下的网站部分。同时,它有助于减少服务器负载,因为减少了客户端与服务器之间通信所需的数据量,只需发送用于客户端处理(渲染视图等)的显示页面所需数据即可。
通过使用Backbone.js或其他MVC(类似)框架,您可以将服务器减少到仅公开用于处理和接收数据的REST API,而无需处理渲染,您可以把一些甚至大部分逻辑传递到客户端。
现今大多数Web应用程序都利用客户端路由 - 从GMail到Twitter等任何应用程序。

2
你能给一个具体的例子吗?相较于单页应用程序中每个主要部分都有一些 AJAX 端点在服务器上公开并使用适当的内容刷新相应页面部分的情况,这种方法有哪些好处? - skeej
2
拥有适当的路由而不是散布在各处的ajax回调意味着对于用户来说更加容易和优雅,因为对于他们来说,这仍然是具有干净URL地址的老式互联网,他们可以将其添加到书签、复制并粘贴到文档、朋友等,并通过访问地址轻松访问页面/应用程序的给定状态。用户越来越习惯于更多交互式和无缝的体验,浏览器也越来越快速地提供这些体验。 - Tom Tu
这只是从 Ajax 重型应用程序向前迈出的一步,并且采用了我们从服务器端开发及其 MVC 框架中学到的最佳实践。(没适合 :)) - Tom Tu
关于“拥有适当的路由而不是散布在各处的ajax回调函数意味着对用户来说更加简单和优雅...”:它为什么更好?你能给一个具体的例子吗? - skeej
1
最后,如果您通过在浏览器地址栏中更新应用程序URL来实现相同的结果,并将使访问所有应用程序状态的这些自定义URL成为可能-从用户的角度来看,它与路由一样好,因为它可以达到相同的效果。但是!在应用程序中添加新路由/路径的处理要比在某种ajax解决方案中添加处理额外页面的支持更加详细,易于维护和清洁。 - Tom Tu
显示剩余3条评论

1

好的,我现在更好地理解了。它只是函数调用者和被调用者之间的一层抽象。您可以引入路由系统来连接两者,而不是在调用者和被调用者之间附加硬编码依赖关系,并提供其他功能,如验证或将多个被调用者绑定到调用者。然后,您可以使用restful句柄(例如“/getCoffee/decaf”)引用您的操作,这些句柄也可以动态构建(因为它们只是字符串)。

我仍在思考路由方案与创建自定义事件的相对优势。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接