码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Vue 快速入门之第四章 路由


    目录

    一:什么是路由?

    路由的分类

    前端路由 

    后端路由

    二:SPA是什么?

     单页面应用程序

       传统多页面应用程序

     优势:

    SPA实现思路和技术点

    三:通过vue的路由可实现多视图的单页Web应用(基于html的SPA)

            ①:引入依赖库

          ②:创建自定义组件

       注:

            ③:定义路由(即路线)

          ps:根路径"/"

             ④: 创建路由器实例,然后传 `routes` 配置(路由器包含多条路由)

             ⑤:创建和挂载根实例

           ⑥:使用RouterLink和RouterView组件导航和显示

    四:router-link相关属性

     to :表示目标路由的链接

     replace:设置 replace 属性的话,当点击时,会调用 router.replace() 而不是 router.push(),导航后不会留下 history 记录

      vue中导航中的后退-前进-编程式导航

       append:设置 append 属性后,则在当前 (相对) 路径前添加基路径。例如,我们从 /a 导航到一个相对路径 b,如果没有配置 append,则路径为 /b,如果配了,则为 /a/b

             有时候想要 渲染成某种标签,例如

    • 。 于是我们使用 tag prop 类指定何种标签,同样它还是会监听点击,触发导航

       active-class:   设置 链接激活时使用的 CSS 类名

       exact-active-class     配置当链接被精确匹配的时候应该激活的 class

      event:声明可以用来触发导航的事件。可以是一个字符串或是一个包含字符串的数组

      五:完整案例

      实现效果:


    一:什么是路由?

                          路由的本质就是一种对应关系,比如说我们在url地址中输入我们要访问的url地址之后,浏览器要去请求这个url地址对应的资源,那么url地址和真实的资源之间就有一种对应的关系,就是路由

    • 路由的分类

    • 前端路由 

                   根据不同的事件来显示不同的页面内容,即事件与事件处理函数之间的对应关系
    前端路由主要做的事情就是监听事件并分发执行事件处理函数,主要是依靠hash值(锚链接)的变化进行实现

    • 后端路由

                    由服务器端进行实现,并完成资源的分发



    二:SPA是什么?

               ​   SPA(Single Page Application)单页面应用程序,整个页面只有一个页面,内容的变化通过 ajax 局部更新实现,同时支持浏览器地址栏的前进与后退操作,又称单页面多视图。其实现原理是基于 url 地址的hash变化,hash变化会导致浏览器访问记录的变化,但不会触发新的url请求。SPA最核心的技术点就是前端路由。

              ​  SPA 还有后端路由渲染和ajax前端渲染两种解决方案,但是后端路由渲染的性能很低,ajax前端渲染,虽然性能高,但不支持浏览器的前进后退操作。
     

    •  单页面应用程序

                  只有第一次会加载页面, 以后的每次请求, 仅仅是获取必要的数据.然后, 由页面中js解析获取的数据, 展示在页面中

    •    传统多页面应用程序

                  对于传统的多页面应用程序来说, 每次请求服务器返回的都是一个完整的页面

     优势:

    1. 减少了请求体积,加快页面响应速度,降低了对服务器的压力
    2. 更好的用户体验,让用户在web app感受native app的流畅
    3. 良好的前后端分离的工作模式

    • SPA实现思路和技术点

    1.  ajax
    2. 锚点的使用(window.location.hash #)
    3.  hashchange 事件 window.addEventListener("hashchange",function () {})
    4. 监听锚点值变化的事件,根据不同的锚点值,请求相应的数据
    5.  原本用作页面内部进行跳转,定位并展示相应的内容

    三:通过vue的路由可实现多视图的单页Web应用(基于html的SPA)

            ①:引入依赖库

    1. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    2. <script src="https://cdn.bootcdn.net/ajax/libs/vue-router/3.5.0/vue-router.js">script>

          ②:创建自定义组件

    1. const Home=Vue.extend({template:'<div><h1>首页h1><div>首页的内容区域div>div>'});
    2. const About=Vue.extend({template:'<div><h1>关于h1><div>关于的内容区域div>div>'});

       注:

    1. extend是构造一个组件的语法器. 你给它参数,他给你一个组件,然后这个组件你可以作用到Vue.component这个全局注册方法里,也可以在任意vue模板里使用car组件
    2. 也可以用以前的方式创建和获得组件,效果也是一样的
    1. Vue.component("button-counter", {...});//创建组件
    2. var ButtonCounter = Vue.component('button-counter');//获得组件

       

            ③:定义路由(即路线)

    1. var routes=[
    2. {name:'Home',path:'/Home',component:Home},
    3. {name:'About',path:'/About',component:About},
    4. ];

          ps:根路径"/"

             ④: 创建路由器实例,然后传 `routes` 配置(路由器包含多条路由)

    	var router=new VueRouter({routes:routes});

             ⑤:创建和挂载根实例

      var vm = new Vue({router: router}).$mount('#app');

           ⑥:使用RouterLink和RouterView组件导航和显示

    1. <router-link to="/home">go to Homerouter-link>
    2. <router-view>router-view>

    四:router-link相关属性

    •  to :表示目标路由的链接

    1. <router-link to="/home">Homerouter-link>
    2. <router-link v-bind:to="'home'">Homerouter-link>

    •  replace:设置 replace 属性的话,当点击时,会调用 router.replace() 而不是 router.push(),导航后不会留下 history 记录

       <router-link :to="{ path: '/home'}" replace>router-link>
    

     

    •   vue中导航中的后退-前进-编程式导航

    1. this.$router.go(-1) :代表着后退
    2. this.$router.go(1):代表着前进
    3. this.$router.push({ 切换到name为home的路由
    4. name:'home'
    5. });

    •    append:设置 append 属性后,则在当前 (相对) 路径前添加基路径。例如,我们从 /a 导航到一个相对路径 b,如果没有配置 append,则路径为 /b,如果配了,则为 /a/b

    1.   <base herf="${pageContext.request.contextPath}/"/>
    2.      base标签作用于head标签之间在link和script标签中的href和src属性之前加入
    3.      <base href="/vue04/">
    4.      <script src="js/vue.js">
    5.       base中href+script标签中的src    /vue04/js/vue.js
    6.     
    7.       <router-link :to="{ path: 'relative/path'}" append>router-link>

    •          有时候想要 渲染成某种标签,例如
    • 。 于是我们使用 tag prop 类指定何种标签,同样它还是会监听点击,触发导航
    1. <router-link to="/foo" tag="li">foorouter-link>
    2. <li>fooli>

    •  active-class:   设置 链接激活时使用的 CSS 类名

    •  exact-active-class     配置当链接被精确匹配的时候应该激活的 class

    • event:声明可以用来触发导航的事件。可以是一个字符串或是一个包含字符串的数组

       <router-link v-bind:to = "{ path: '/route1'}" event = "mouseover">Router Link 1router-link>     

    五:完整案例

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8" />
    5. <title>title>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. <script src="https://cdn.bootcdn.net/ajax/libs/vue-router/3.5.0/vue-router.js">script>
    8. head>
    9. <body>
    10. <div id="a">
    11. <h1>{{ts}}h1>
    12. <div>
    13. <button @click="goto">前进button>
    14. <button @click="back">后退button>
    15. <button @click="change">切换button>
    16. div>
    17. <div>
    18. <router-link to="/Home">首页router-link>
    19. <router-link to="/About" replace>关于router-link>
    20. div>
    21. <div>
    22. <router-view/>
    23. div>
    24. div>
    25. body>
    26. <script>
    27. //1.引入vue.js和vue-router.js
    28. //2.创建自定义组件
    29. const Home=Vue.extend({template:'

      首页

      首页的内容区域
      '
      });
    30. const About=Vue.extend({template:'

      关于

      关于的内容区域
      '
      });
    31. //3.定义路由(路由即路线)
    32. var routes=[
    33. {name:'Home',path:'/Home',component:Home},
    34. {name:'About',path:'/About',component:About},
    35. ];
    36. //4.定义路由器(路由器包含多条路由)
    37. var router=new VueRouter({routes:routes});
    38. //5.创建和挂载根实例
    39. var vm=new Vue({
    40. //el:'#a',
    41. router:router,
    42. data:function(){
    43. return{
    44. ts:new Date().getTime()
    45. }
    46. },
    47. methods:{
    48. goto:function(){
    49. this.$router.go(1); //history.go(); 前进
    50. },
    51. back:function(){
    52. this.$router.go(-1); //回退
    53. },
    54. change:function(){
    55. this.$router.push('/Home');
    56. }
    57. }
    58. }).$mount('#a');
    59. script>
    60. html>

    实现效果:

  • 相关阅读:
    第一章:网络协议的奥秘
    【带你学c带你飞】1day 第2章 (练习2.2 求华氏温度 100°F 对应的摄氏温度
    MySql配置环境变量及修改密码
    软件工程师参加技术峰会,带来的价值,你想象不到!
    redis 中的八大问题
    c-数据在内存中的存储-day7
    Codeforces Round 753 (Div. 3)(集训队加训2)
    机器学习实战-支持向量机
    产品设计与用户体验 优漫动游
    unity 动画结束 后处理事件
  • 原文地址:https://blog.csdn.net/qq_61313896/article/details/126554137
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号