【问题标题】:What does JavaScript Routing buy you?JavaScript 路由给你带来了什么?
【发布时间】:2012-04-21 23:04:54
【问题描述】:

我一直在查看各种 RIA,并注意到有些人使用或请求 JavaScript Routing。只是浏览一下“JavaScript 路由”看起来像是一种遍历您的网站的方式......但我可以使用一个简单的链接。这意味着我绝对“不明白”。

那么...

  • Routing 为您提供了常规锚点或链接所没有的哪些功能?
  • 是否仅适用于某些环境? (即 ASP.NET 或直接 HTML)
  • 它有什么用?
  • 它存在的目的是什么?

【问题讨论】:

  • 措辞出色。

标签: javascript asp.net url-routing


【解决方案1】:

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

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

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

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

路由不是必需来管理持久性,但它是组织持久性状态的好方法。通常,路由系统与 URL 历史管理密切相关,例如 Davis.js。但也有一些路由库不会与 URI 混淆,它们维护一个抽象的标记化状态,您可以使用或显示您认为合适的状态,例如 Crossroads.js

【讨论】:

  • 所以,很明显,这不会在 ASP.NET MVC 或 SharePoint 应用程序中使用...对吗?
  • SharePoint,可能不是。 SharePoint 管理自己的标记,因此您不会做这种以前端为中心的工作。可以想象,ASP.NET MVC 可以用作基于 JavaScript 的 RIA 的服务器端技术,因此答案是“也许”。关键问题是您是否在运行单页 JavaScript 应用程序。
  • 请注意,虽然默认情况下 Davis.js 使用 pushState 来维护状态,但它可以很容易地使用任何其他方式来维护当前状态等,无论是否通过 URL。跨度>
  • 谢谢,@OliverNightingale!当我研究 Davis.js 时,我很喜欢它,但被否决而支持自产解决方案,所以我对它的熟悉程度还不够,无法知道它的模块化程度。干得好!
猜你喜欢
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 2014-07-23
  • 2015-05-18
  • 1970-01-01
  • 2013-08-21
  • 1970-01-01
相关资源
最近更新 更多