vue学习笔记(九)——Vue-Router(路由系统)

一、Vue路由简介和基础使用

1.1 生活中的路由

设备和ip的映射关系

1.2 nodejs路由

接口和服务的 映射 关系

1.3 前端路由

路径和组件的 映射 关系
1. 路由是什么呢?
        路由是一种映射关系
2. Vue中的路由是什么?
        路径和组件的映射关系

1.4 为何使用路由

目标:了解为何使用路由
具体使用示例: 网易云音乐 https://music.163.com/
单页面应用(SPA):所有功能在 一个html页面 上实现
前端 路由作用: 实现业务场景切换
优点:
        整体 不刷新页面 ,用户体验更好
        数据传递容易, 开发 效率高
缺点:
        开发成本高(需要学习专门知识)
        首次加载会比较慢一点。不利于seo
1. 什么是单页面应用?
        所有的业务都在一个页面编写,只有一个html
2. 单页面应用好处?
        开发效率高,用户体验好
3. 单页面如何切换场景?
        依赖路由切换显示

1.5 vue-router

目标: vue-router本质是一个第三方包
官网: https://router.vuejs.org/zh/
vue-router模块包
        它和 Vue.js 深度集成
        可以定义 - 视图表(映射规则)
        模块化的
        提供2个内置全局组件
        声明式导航自动激活的 CSS class 的链接
以后Vue中如何实现路由?
        集成vue-router模块包

1.6 组件分类

目标: .vue文件分2类,一个是页面组件,一个是复用组件
.vue文件本质无区别,方便大家学习和理解,总结的一个经验
        src/views文件夹
                页面组件 - 页面展示 - 配合路由用
        src/components文件夹
                复用组件 - 展示数据/常用于复用
1. 为何把.vue文件分类?
        方便理解和使用
2. 页面组件用在哪里?
        配合路由,切换页面
3. 复用组件用在哪里?
        页面组件,重复渲染结构一样的标签

1.7 vue-router模块

目标:学会vue-router路由系统使用
步骤:
① 下载vue-router模块到当前工程(下载路由
如果 vue 项目是 2.0 版本,那么直接适用 yarn add vue-router 则会报下面的错误。
原因:
        原因主要就是我们在下载  vue-router 的时候下载的是最新版的以4开头),但是这个版本它是给 Vue 3 准备的,所以我们 要卸载 vue-router,然后限制他的版本
解决方案:
        使用命令 yarn remove vue-router 卸载当前版本
        安装指定的版本 yarn add vue-router@3
          
② 在main.js中引入VueRouter函数(引入路由
③ 添加到Vue.use()身上 – 注册全局RouterLink和RouterView组件(注册路由
④ 创建路由规则数组 – 路径和组件名对应关系(创建路由规则
⑤ 用规则生成路由对象(生成路由对象
⑥ 把路由对象注入到new Vue实例中(注入vue实例
⑦ 用 router-view 作为挂载点,切换不同的路由页面(挂载路由
注意: 一切都要以url上hash值为准
1. vue-router本质是什么?
        第三方包,下载后集成到vue项目中
2. vue-router 如何使用?
        下包/引入/注册/规则/路由对象/注入/挂载点
3. 规则如何生效?
        切换url上hash值,开始匹配规则,对应组件展示到  router-view 位置

二、声明式导航

2.1 声明式导航

目标:可用组件router-link来替代a标签
        1. vue-router提供了一个全局组件 router-link
        2. router-link实质上最终会渲染成a链接 to属性等价于提供 href属性( to无需# )
        3. router-link提供了声明式 导航高亮 的功能( 自带类名 )

1. router-link是什么?
        VueRouter在全局注册的组件,本质就是a标签
2. router-link怎么用?
        当标签使用,必须传入to属性,指定路由路径值
3. router-link好处?
        自带激活时的类名,可以做高亮

2.2 声明式导航 - 跳转传参

目标:在跳转路由时,可以给路由对应的组件内传值
在router-link上的to属性传值,语法格式如下:

方式一:query 查询字符串的形式传值

① /path ?参数名=值
 对应页面组件接收传递过来的值  
② $route.query.参数名

方式二:params 的形式传值

① /path/– 需要路由对象提前配置 path: “/path/参数名
② $route.params.参数名
1. 声明式导航跳转时, 如何传值给路由页面?
        to="/path?参数名=值"
        to=“/path/值” (需在路由规则里配置/path/:参数名)
2. 如何接收路由传值?
        $route.query.参数名
        $route.params.参数名

三、重定向和模式

3.1 路由 - 重定向

目标:匹配path后,强制跳转path路径
        网页打开url默认hash值是 / 路径
        redirect是设置要重定向到哪个路由路径
1. 如何监测默认路由?
        规则里定义path: '/'
2. 如何重定向路由路径?
        redirect配置项,值为要强制切换的路由路径

3.2 路由 - 404

目标:找不到路径给个提示页面
        路由最后,path匹配 * (任意路径) – 前面不匹配就命中最后这个
如何给路由体系里设置404页面?
        在数组最后一个位置,插入匹配 * 的规则,展示404页面

3.3 路由 - 模式设置

目标:修改路由在地址栏的模式
        hash路由例如: http://localhost:8080/#/home
        history路由例如: http://localhost:8080/home (以后上线需要服务器端支持,否则找的是文件夹)
如何修改路由模式呢?
        在实例化路由对象时,传入mode选项和值修改

四、编程式导航

4.1 编程式导航 - 基础使用

目标:用JS代码来进行跳转
语法: path或者name任选一个
JS如何切换路由路径?
        this.$router.push()配置path/name
        要和路由规则数组里对应

4.2 编程式导航 - 跳转传参

目标:JS跳转路由,传参

语法: query或者params任选一个

注意: 使用path会忽略params
传参:
接收:

五、嵌套和守卫

5.1 路由 - 路由嵌套

目标:在现有的一级路由下,再嵌套二级路由
二级路由示例-网易云音乐-发现音乐下 https://music.163.com/
目标:在现有的一级路由下,再嵌套二级路由
1. 创建需要用的所有组件
        src/views/FindMusic .vue -- 发现音乐页
        src/views/MyMusic .vue -- 我的音乐页
        src/views/children /MusicRecommend .vue -- 发现音乐页 / 推荐页面
        src/views/children /MusicRanking .vue -- 发现音乐页 / 排行榜页面
        src/views/children /SongList.vue -- 发现音乐页 / 歌单页面
2. main.js– 继续配置2级路由
        一级路由path从 / 开始定义
        二级路由往后path直接写名字,无需 / 开头
        嵌套路由在上级路由的children数组里编写路由信息对象
3. 说明:
        App.vue的router-view负责发现音乐和我的音乐页面,切换
        FindMusic .vue的 router-view 负责发现音乐下的三个页面,切换
1. 二级路由如何配置?
        创建需要的二级页面组件
        路由规则里children中配置二级路由规则对象
        一级页面中设置router-view显示二级路由页面
2. 二级路由注意什么?
        二级路由path一般不写根路径 /
        跳转时路径要从 / 开始写全

5.2 声明式导航 – 类名区别

观察路由嵌套导航的样式
        router-link-exact-active (精确匹配) url中hash值路径,与href属性值完全相同,设置此类名
        router-link-active (模糊匹配) url中hash值,包含href属性值这个路径
1. 自动添加的2个类名的区别?
        router-link-exact-active – url 的 hash 值和 href 完全匹配
        router-link-active – url 的 hash 值包含 href 路径值匹配

5.3 全局前置守卫

目标:路由跳转之前, 会触发一个函数
例如: 登陆状态去 <我的音乐> 页面,未登录弹窗提示
语法: router.beforeEach((to, from, next) =>{})
        一定调next(),才会跳转下一页
什么是路由守卫?
        路由在真正跳转前,会执行一次 beforeEach 函数,next调用则跳转,也可以强制修改要跳转的路由

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/216047.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt内存泄漏工具vld使用

安装vld 下载并安装vld Github镜像站-GitHub - KindDragon/vld: Visual Leak Detector for Visual C 2008-2015 我安装在d盘的&#xff0c;如下图所示 拷贝文件 复制三个文件夹到工程目录的vld下 pro文件添加 win32: LIBS -L$$PWD/vld/lib/Win32/ -lvld INCLUDEPATH $$P…

EG网关串口连接力控ForceControl7.2软件应用案例

EG网关串口连接力控ForceControl7.2软件应用案例 前言&#xff1a;力控ForceControl软件广泛应于工业控制领域&#xff0c;是一款性能高&#xff0c;运行稳定的工业组态软件。此次我们要把力控ForceControl软件通过Modbus协议连接到EMCP设备管理云平台&#xff0c;实现电脑Web页…

Python中format函数用法

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 format优点 format是python2.6新增的一个格式化字符串的方法&#xff0c;相对于老版的%格式方法&#xff0c;它有很多优点。 1.不需要理会数据类型的问题&#…

UE5 树叶飘落 学习笔记

一个Plane是由两个三角形构成的&#xff0c;所以World Position Offset&#xff0c;只会从中间这条线折叠 所有材质 这里前几篇博客有说这种逻辑&#xff0c;就是做一个对称的渐变数值 这里用粒子的A值来做树叶折叠的程度&#xff0c;当然你也可以用Dynamic Param 这样就可以让…

ai学习之快捷键介绍

ai2021学习之快捷键介绍 F 全屏Ctr Y &#xff0c;可以在去色和全色中切换。Shift O 画板工具CtrlALTY 将矢量图转为位图。Ctrl R 可以显示标尺&#xff0c; CTRL冒号&#xff08;&#xff1a;&#xff1b;&#xff09; 隐藏参考线智能参考线CTRLshirtz 撤回撤回的撤回 Ai是一个…

Google AdMob是什么,效果如何

Google AdMob是一种移动广告平台&#xff0c;主要表示在帮助开发人员在移动应用程序中获利。AdMob于2006年成立&#xff0c;后被谷歌收购。它为开发人员提供了一种简单而有效的方式来在他们的应用程序中显示广告&#xff0c;并从中获得收益。 AdMob的工作原理如下&#xff1a;开…

可试玩广告——为app广告变现带来高收益

可试玩广告具有强烈的互动性&#xff0c;使用户能够试用应用程序的主要功能或者是游戏的核心玩法。 试玩广告为提供受众创造了身临其境的体验。当用户接触了广告试玩后&#xff0c;他们对游戏建立了明确的期待&#xff0c;如果他们想要继续体验&#xff0c;便自然会安装下载。…

PMP备考必看|浅谈PMP证书的价值,PMP考试详细全流程

作为已经在项目管理领域摸爬滚打五年的资深项目经理&#xff0c;我可以诚实的告诉大家&#xff0c;在项目管理领域拥有丰富项目管理经验的人都知道&#xff0c;很多公司在发布招聘信息时都会要求申请者持有PMP证书&#xff0c;这些证书在项目经理岗位的要求中经常出现。 在实际…

如何实现高效代码审查,赋能大规模开发

对于许多企业来说&#xff0c;代码审查都是开发过程中不可缺少的一环。软件开发人员通常会对代码审查感到又爱又恨。一般来说&#xff0c;实施代码审查的企业普遍认为通过及早发现问题和低效率&#xff0c;在长远来看可节省时间。 阅读本篇文章&#xff0c;您将了解到什么是代…

React全站框架Next.js使用入门

Next.js是一个基于React的服务器端渲染框架&#xff0c;它可以帮助我们快速构建React应用程序&#xff0c;并具有以下优势&#xff1a; 1. 支持服务器端渲染&#xff0c;提高页面渲染速度和SEO&#xff1b; 2. 自带webpack开发环境&#xff0c;实现即插即用的特性&#xff1b;…

【改进YOLOV8】融合EfficientViT骨干网络的车辆颜色车牌识别系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义&#xff1a; 随着交通事故的不断增加和交通管理的日益重要&#xff0c;车辆识别系统在交通领域中的应用变得越来越重要。车辆颜色和车牌识别系统是车辆识别系统中…

DeepVoice AI - Text To Voice

No sign-up, No API Keys, no recurr

StarRocks上新,“One Data、All Analytics”还有多远?

K.K在《未来十二大趋势》中认为&#xff0c;我们正处于一个数据流动的时代。商业乃数据之商业。归根结底&#xff0c;你在处理的都是数据。 的确&#xff0c;当数据成为新的核心生产要素之际&#xff0c;数据分析就犹如最重要的生产工具之一&#xff0c;决定着企业在数字化时代…

ADAudit Plus:强大的网络安全卫士

随着数字化时代的不断发展&#xff0c;企业面临着越来越复杂和多样化的网络安全威胁。在这个信息爆炸的时代&#xff0c;保护组织的敏感信息和确保网络安全已经成为企业发展不可或缺的一环。为了更好地管理和监控网络安全&#xff0c;ADAudit Plus应运而生&#xff0c;成为网络…

CO11N报工时,在填入返工数量后自动产生返工工单

本文档主要说明一种返工流程,当工人报工时,填写返工数量、变式原因即可启动触发点自动创建返工订单,被创建的反工订单为无料号生产订单,且关联报工订单。涉及系统功能点包括状态参数 一、 后台配置 1).用户状态参数:BS02(SPRO-生产-商店低价控制-主数据-订单-定义状态…

ROS2 galactic生成的bag包里的MarkerArray在humble下播放不正常

近期发现ROS2 galactic下生成的bag包在humble下回放时使用rviz可视化&#xff0c;bag里的点云可以正常看到&#xff0c;但是使用Marker和MarkerArray画的box却死活看不到&#xff0c;感觉很纳闷&#xff0c;看网上有人报告说foxy下生成的bag包在galactic下播放会报SQL错误&…

干货|水表基础知识大全

第一部分 水表基础知识 第一节 水表的作用 水表:是用来记录流经自来水管道中水量的一种计量器具,也称为计量器具。 1、水表的发展简史 1825年英国的克路斯发明了真正具有仪表特征的平衡罐式水表以来&#xff0c;水表的发展已有近二百年的历史。期间&#xff0c;水表的结构…

SystemVerilog基础:并行块fork-join、join_any、join_none(一)

相关阅读 SystemVerilog基础https://blog.csdn.net/weixin_45791458/category_12517449.html?spm1001.2014.3001.5482 有关Verilog中顺序块和并行块的相关内容已经在之前的Verilog基础的文章讲过&#xff0c;如下所示。 Verilog基础&#xff1a;块语句https://blog.csdn.net…

11、pytest断言预期异常

官方用例 # content of test_exception_zero.py import pytestdef test_zero_division():with pytest.raises(ZeroDivisionError):1/0# content of test_exception_runtimeerror.py import pytestdef test_recursion_depth():with pytest.raises(RuntimeError) as excinfo:def…

MySQL基础『数据类型』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; MySQL 学习 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 &#x1f381;软件版本&#xff1a; MySQL 5.7.44 文章目录 1.数据类型一览2.整型2.1.INT2.2.BIT 3.浮点数3.1.FLOAT3.2.DECIMAL3…