JS 框架 词条目录
前端Wiki/JS 框架/深入/路由与状态管理

前端路由概念

传统网站每次换页都向服务器请求新 HTML(刷新、白屏);SPA(单页应用)只有一张 HTML,切换「页面」靠 JS 替换视图区域——这靠前端路由实现。URL 变了,但页面不刷新,由路由根据新 URL 渲染对应组件。

路由有两种模式:hash 模式用 #/about 形式,监听 hashchange 事件,兼容性最好、部署最省事;history 模式用真实的 /about 路径,靠 history.pushState API + 服务器配置(所有路径都回退到 index.html),URL 更美观。Vue Router 和 React Router 都支持这两种模式。

下面的示例用 15 行实现了一个可运行的 hash 路由,支持参数(/user/42)。看懂它,你就理解了 vue-router 里 <router-view> 背后在发生什么。

本节要点SPA 不刷新页面,由路由决定渲染哪个组件;hash 模式监听 hashchange,history 模式用 pushState + 服务器配置;动态路由如 /user/:id 支持参数。
HTML
<nav>
  <a href="#/home">首页</a>
  <a href="#/about">关于</a>
  <a href="#/user/42">用户 42</a>
</nav>
<div id="view"></div>
<script>
  const view = document.getElementById('view');

  // 极简 hash 路由:监听 hashchange,按路径分发渲染
  function router() {
    const path = location.hash.slice(1) || '/home';

    if (path === '/home') {
      view.textContent = '这是首页内容';
    } else if (path === '/about') {
      view.textContent = '这是关于页内容';
    } else if (path.startsWith('/user/')) {
      // 动态路由:从路径里提取参数
      view.textContent = '用户 ID:' + path.split('/')[2];
    } else {
      view.textContent = '404:页面不存在';
    }
    console.log('路由变化 →', path);
  }

  window.addEventListener('hashchange', router);
  router();   // 首次进入也要执行一次
</script>