【问题标题】:What is client-side routing and how is it used?什么是客户端路由以及如何使用它?
【发布时间】:2012-04-28 17:35:04
【问题描述】:

如果有人能回答以下问题,我会很高兴

  1. 它是如何工作的?
  2. 为什么有必要?
  3. 它有什么改进?

【问题讨论】:

  • 这里提到的问题和答案都没有了
  • @István 相应地编辑了问题,谢谢。

标签: url-routing client-side


【解决方案1】:

我知道已经晚了,但我有一些关于客户端路由 (CSR) 工作原理的信息。这个答案并不试图提供客户端路由的完整 js 实现,而是试图阐明哪些概念将帮助您实现自己的一个。确实,当用户单击锚标记时,浏览器会向服务器发送请求。但是我们将能够拦截事件并阻止它的默认行为,即使用“event.preventDefault();”向服务器发送请求。下面是来自 React 路由器网页的 sn-p。

<a
  href="/contact"
  onClick={event => {
    // stop the browser from changing the URL and requesting the new document
    event.preventDefault();
    // push an entry into the browser history stack and change the URL
    window.history.pushState({}, undefined, "/contact");
  }}
/>

同时聆听前进/后退按钮的点击也很重要。这可以通过,

window.addEventListener("popstate", () => {
  // URL changed!
});

但是看看上面的两个 sn-ps,你可以想象 CSR 是如何实现的。还有更多。这就是为什么存在像 React Router 这样的库,而像 Angular 这样的 Web 框架默认提供 CSR 的原因。

如果您想了解更多信息,请访问下面的链接,它将进入您的 react router 概念页面。

https://reactrouter.com/docs/en/v6/getting-started/concepts

此外,如果您想更深入地了解该主题,可以查看 Angular 路由器的代码。比较这两种实现将提供更深入的了解。

【讨论】:

    【解决方案2】:

    我试图构建一个单页应用程序并开始了解客户端路由。

    通过实现客户端路由,我能够实现以下目标

    1. 浏览器中的前后按钮开始为我的单页 JavaScript 应用程序工作。这在从移动浏览器访问页面时非常重要。
    2. 用户能够收藏/分享以前无法实现的 URL。

    【讨论】:

      【解决方案3】:

      客户端路由与服务器端路由相同,但它是在浏览器中运行的。

      在典型的 Web 应用程序中,您有多个页面映射到不同的 URL,每个页面都有一些逻辑和模板,然后呈现。

      客户端路由只是在浏览器中运行这个过程,使用 JavaScript 作为逻辑和一些基于 JS 的模板引擎或其他类似的方法来呈现页面。

      通常用于单页应用程序,其中服务器端代码主要用于提供客户端代码通过 Ajax 使用的 RESTful API。

      【讨论】:

      • 好的,但是浏览器肯定会为每个路由向服务器发出请求(除非使用#routing)......这是怎么工作的?服务器是否以 404 响应,然后路由从该点接管?
      • ...也许它没有从服务器请求 URL,并且路由库拦截了它 - 在我的一个应用程序的开发工具中查找,似乎没有对路由的请求发送到服务器。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2015-03-13
      • 2013-10-25
      • 2014-11-19
      相关资源
      最近更新 更多