JavaScript Routing为您带来了什么?

时间:2012-04-09 15:25:38

标签: javascript asp.net url-routing

我一直在研究各种RIA,并注意到有些人使用或请求 JavaScript Routing 。只是浏览它'JavaScript Routing'看起来像是一种遍历你网站的方式......但我可以使用一个简单的链接。这意味着我绝对不会得到它。

因此...

  • 路由为您提供常规锚点或链接不是什么?
  • 仅适用于某些环境吗? (即ASP.NET或直接HTML)
  • 它的用途是什么?
  • 它的存在有什么目的?

1 个答案:

答案 0 :(得分:55)

路由是一种组织和管理应用程序状态的方法。 JavaScript中的路由框架可帮助您更改应用程序的状态 - 可能从一个管理面板部分移动到另一个部分 - 同时保持应用程序持久性

如果您想从一个应用程序状态导航,例如/admin/users,另一个,例如/admin/orders,您可以按照建议使用普通链接。但是,您将导致浏览器从一个HTML页面导航到另一个HTML页面。显然,这是在Web上导航的正常方式。但是在JavaScript应用程序中,这是非常低效的!

如果您在JavaScript中运行复杂的浏览器内应用程序,则该应用程序在启动时需要执行大量工作。它注册事件处理程序,加载并执行一堆JavaScript,有时会动态呈现整个页面界面(在ExtJS和其他一些库的情况下)。对于浏览器来说,在/admin/orders设置一个与/admin/users上的JavaScript应用程序有很多共同之处的JavaScript应用程序是一项额外的工作。更有效的方法是链接触发应用程序监视的事件,并通过更改应用程序的状态来响应应用程序 - 可能通过删除或隐藏用户视图并将其替换为订单视图。路由是一种表示这些不同接口的方式,使用令牌(通常是像/admin/users这样的URL片段)来跟踪用户在您的界面中的位置。

这允许应用程序维护动态对象模型,它已经烧掉了时间并使用了内存来创建。它使用户界面响应更快,如果您通过hashtag或pushState使用URL历史记录管理,它允许用户使用浏览器的后退和前进按钮浏览您的应用程序,而无需重新加载每次页面并擦除您的应用程序状态。 URL管理还允许深度链接到应用程序中的某个页面:在加载时,您的应用程序的路由器会检查它接收的路由字符串,对其进行标记,并加载您在路由表中指定的接口。

路由不是必需以管理持久性,但它是组织持久状态的好方法。通常,路由系统与URL历史管理密切相关,如Davis.js。但是也有一些路由库不会弄乱URI,它保持一个抽象的标记化状态,你可以根据需要使用或显示,如Crossroads.js