前端路由

2020-11-04  本文已影响0人  bestCindy

什么是路由呢,路由就是根据不同的 url 地址展现不同的页面或者内容

路由分为两种 hash 模式history 模式

hash 模式

原理

<body>
    <a href="#/a">A页面</a>
    <a href="#/b">B页面</a>
    <div id="app"></div>
    <script>
        function render() {
            app.innerHTML =  window.location.hash;
        };
        window.addEventListener("hashchange", render);
        render();
    </script>
</body>

优点

缺点

history 模式

history API 是 H5 提供的新特性,允许开发者直接更改前端路由

原理

<body>
    <a href="javascript:toA()">A页面</a>
    <a href="javascript:toB()">B页面</a>
    <a id="app"></a>
    <script>
        function render() {
            app.innerHTML = window.location.pathname
        }
        function toA() {
            history.pushState({}, null, "/a");
            render();
        }
        function toB() {
            history.pushState({}, null, "/b");
            render();
        }
        window.addEventListener("popstate", render)
    </script>
</body>

上面代码监听了 popstate 事件,改事件可以监听

所以上述代码中 toAtoB 要手动调用 render

另外,history 模式改变 url 的方式会导致浏览器向服务器发送请求,如果匹配不到任何静态资源,就会返回一个 404

所以,这也是为什么 light-server 命令强制加了一个 history.html,这个参数的意思是如果资源不存在就会返回 history.html 页面的内容

优点

缺点

原文
前端路由模式详解(hash和history)
https://www.cnblogs.com/ggbondlearn/p/12239651.html
https://juejin.im/post/6844904054087221256

上一篇 下一篇

猜你喜欢

热点阅读