vue路由

88 阅读2分钟

路由:主要是可以实现单页面应用

路由及工作原理介绍

前端路由和后端路由不是同一个东西,不要搞混淆

  • 后端路由:url地址和后端逻辑的对应关系

  • 前端路由:url地址和组件的对应关系

  • 1.前端中的路由 : 不同的路径对应加载不同的页面,且页面不会跳转

  • 路由的功能类似于tab切换,但是更加的高级,性能更好

  • 2.路由的工作原理 : 监听网页hash值变化

    • (1)修改网页的hash值

    • hash值原本的作用是来做锚点定位的,它有一个特点就是页面不会跳转

  • (2)给window注册onhashchange事件,监听hash值变化

    • 当页面hash变化时,就会执行这个事件处理函数,然后就可以根据不同hash值加载不同页面
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <!-- 
        1.前端中的路由 : 不同的路径对应加载不同的页面,且页面不会跳转
        2.路由的工作原理 : 监听网页hash值变化
            (1)修改网页的hash值  
                * hash值原本的作用是来做锚点定位的,它有一个特点就是页面不会跳转
            (2)给window注册onhashchange事件,监听hash值变化
                * 当页面hash变化时,就会执行这个事件处理函数,然后就可以根据不同hash值加载不同页面

     -->
    <!-- 1.点击按钮:修改地址栏的hash值 -->
    <button onclick="window.location.hash = '#/a'">按钮1</button>
    <button onclick="window.location.hash = '#/b'">按钮2</button>
    <button onclick="window.location.hash = '#/c'">按钮3</button>
    <div id="box">
        我是组件
    </div>

    <script>
        //2.给页面注册hash值变化事件
        window.onhashchange = function(){
            if(window.location.hash == '#/a'){
                box.innerHTML = '<p>我是组件A</p>';
            }else if(window.location.hash == '#/b'){
                box.innerHTML = '<p>我是组件B</p>';
            }else if(window.location.hash == '#/c'){
                box.innerHTML = '<p>我是组件C</p>';
            }
        };
    </script>
</body>
</html>

单页面应用SPA介绍

  • singal page application

    目标: 了解什么是单页面应用, 以及前端路由作用

单页面应用: 所有功能在一个页面上实现

前端路由: 实现业务场景切换

经典单页面应用案例:网易云音乐

单页面-多页面对比

对比部分单页应用多页面应用
组成一个html文件多个组件组成多个html文件
静态资源共用共用,一次性加载完毕不共用,每个页面都加载一遍
刷新方式页面局部刷新整页加载
url模式itcast.com/#/pageoneitcast.com/pageone.html
用户体验用户体验良好页面切换加载缓慢体验较差
数据传递容易依赖url传参,cookie,localStorage
搜索引擎优化不利于seo优化,需要ssr优化(服务端渲染)支持良好
使用场景追求高体验 不要求seo高度要求seo
开发成本较高 需要依赖专业的框架, 开发效率高较低 重复代码多, 开发效率低

优点:

  • 整体不刷新页面,用户体验更好
  • 数据传递容易, 开发效率高

缺点:

  • 开发成本高(需要学习路由)
  • 首次加载会比较慢一点。不利于seo搜索引擎优化

总结: 单页面应用, 用户体验好, 开发效率高