Vue2-Vue Router前端路由实现思路

1.路由是什么?

Router路由器: 数据包转发设备,路由器通过转发数据包(数据分组)来实现网络互连

**Route路由:**数据分组从源到目的地时,决定端到端路径的网络范围的进程 | - 网络层

**Distribute分发:**数据包或任务根据规则,分配到不同的路径

Default Route 默认路由: 路由表中没有匹配的路由时,默认显示的路由

Fallback Routing404路由/保底路由: 匹配所有处理未定义或未找到路由请求的特殊路由

Nested Routing 嵌套路由: 一个路由组件内部定义其他路由组件,形成父子结构的路由

Routing Table **路由表:**存储到各个目的地的最佳路径的表,引导分组转送 | - 对象

html 复制代码
#原生js实现路由

/* index.html */
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test Router</title>

</head>
<body>
  <section>
     <a href="#1">page 1</a><br/>
     <a href="#2">page 2</a><br/>
     <a href="#3">page 3</a><br/>
     <a href="#4">page 4</a><br/>
  </section>

  <div id="app"></div>

  <div id="div1" style="display: none">1</div>
  <div id="div2" style="display: none">2</div>
  <div id="div3" style="display: none">3</div>
  <div id="div4" style="display: none">4</div>

  <div id="div404" style="display: none">
      <span>404</span><hr/><span>Not found</span>
  </div>

  <script src="./src/main.js"></script>
</body>
</html>

<style>
    a{
       color: blueviolet;
       text-decoration: none;
    }
    #app{
        background: pink;
        font-size: 32px;
    }
    #div404{
        text-align: center;
    }
</style>
javascript 复制代码
/* main.js 实现不同路由匹配不同页面 */

function route(){
    /* 获取hash */
    let hash=window.location.hash
    let number=hash.substr(1) || '1'
    console.log(hash,number)

    /* 获取并显示当前哈希匹配的div */
    let div=document.querySelector(`#div${number}`)
    if (div) {
        div.style.display = "block";
        let app = document.querySelector('#app');
        app.appendChild(div);
    }else{
        /* 保底路由404 */
        div = document.querySelector(`#div404`)
        div.style.display = "block";
        document.querySelector("body").appendChild(div);
    }
}
route()

window.addEventListener("hashchange",()=>{
    /* 隐藏所有div */
    let allDivs = document.querySelectorAll('[id^="div"]');
    allDivs.forEach(div => div.style.display = "none");

    /* 更新路由匹配 */
    route()
})

2.路由的三种模式

相关推荐
寅时码1 小时前
React 之死·终章:一个 useRef,把闭包陷阱、依赖数组、漫天 rerender 全送走
前端·react.js·ai编程
不好听6131 小时前
HTML 事件监听机制:从 DOM Level 0 到 React 合成事件
前端·react.js·html
wordbaby1 小时前
为什么刷新页面就 404?聊聊 SPA 路由与 Nginx 的那点事
前端
daols881 小时前
vxe-table 渲染器教程一:实现金额输入控件
javascript·vue.js·vxe-table
不好听6131 小时前
React 核心概念:JSX、组件与数据驱动
前端·react.js
触底反弹1 小时前
🔥 React 零基础入门(中):500 行屎山代码到组件化的蜕变
前端·javascript·react.js
不好听6131 小时前
React vs Vue:两大前端框架技术选型深度对比
前端·vue.js·react.js
GuWenyue1 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
GuWenyue1 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
小林ixn2 小时前
从 onclick 到 React 合成事件,再到完整应用逻辑:一次前端架构的深度剖析
前端·react.js·前端框架