这是用户在 2024-3-19 13:16 为 https://flowus.cn/jamiebox/884fa9c3-30de-4db2-b81e-fc24b4226930#563a60fb-124c-413d-b2b6-7a4fddbd076a 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?
J
JamieBox的空间
订阅
模板库
回收站

1. 启动项目准备

​​​​package.json​​​​中配置​​​​--open​​​​即可启动项目时自动打开浏览器
scripts字段
JSON
自动换行 开启
复制
​​​​vue.config.js​​​​中配置​​​​lintOnSave: false​​​​即可关闭ESlint语法校验
请输入代码块名称
JavaScript
自动换行 开启
复制
​​​​jsconfig.json​​​​中配置​​​​paths​​​​即可配置​​​​src​​​​文件夹别名
请输入代码块名称
JSON
自动换行 开启
复制
由于浏览器不识别​​​​less​​​​样式,需要通过​​​​less-loader​​​​进行处理
npm安装指令
npm i less-loader@6
安装​​​​vue-router​​​​,由于​​​​vue2​​​​只能支持​​​​vue-router3​​​​版本,需要指定版本号
npm安装指令
JavaScript
自动换行 开启
复制

2. 路由相关配置

2.1 路由配置流程

​​​​ 新建​​​​src​​​​文件夹下的​​​​router​​​​文件夹,再新建​​​​index.js​​​​文件
index.js代码配置
JavaScript
自动换行 开启
复制
​​​​ 在入口文件​​​​main.js​​​​中配置路由并注册
main.js入口代码配置
JavaScript
自动换行 开启
复制
​​​​​​​​app.vue​​​​组件中配置路由显示
app.vue组件代码配置
Vue
自动换行 开启
复制
tips:有关esLint的规则配置如下:需要在​​​​package.json​​​​​​​​rules​​​​属性中配置

2.2 路由相关参数说明

1
路由组件与非路由组件的区别? 1. 路由组件一般放置在​​​​pages​​​​|​​​​views​​​​文件夹,非路由组件一般放置​​​​components​​​​文件夹中 2. 路由组件一般需要在​​​​router​​​​文件夹中进行注册,非路由组件一般都是以标签的形式使用 3. 注册完路由之后,不管路由组件还是非路由组件身上都有​​​​$route​​​​​​​​$router​​​​属性
2
​​​​$route​​​​​​​​$router​​​​的区别? 1. ​​​​$route​​​​是自身组件的路由信息,包含【​​​​path​​​​​​​​query​​​​​​​​params​​​​​​​​fullPath​​​​​​​​meta​​​​】五个属性 2. ​​​​$router​​​​​​​​VueRouter实例​​​​一般进行编程式导航路由跳转,包含【​​​​push()​​​​|​​​​replace()​​​​】等方法
3
路由跳转的两种方式? 1. 编程式路由导航:如​​​​this.$router.push()​​​​ 2. 声明式路由导航:如​​​​<router-link to="/home"></router-link>​​​​ tips: 常用编程式路由导航编程式路由导航不仅有声明式路由导航该有的功能,而且还能做相应的业务逻辑
4
如何进行路由重定向?
​​​​route​​​​文件夹下​​​​index.js​​​​​​​​routes​​​​属性中配置
请输入代码块名称
JSON
自动换行 开启
复制

2.3 路由元信息

1
如何实现某个组件的显示与隐藏?
请输入代码块名称
JSON
自动换行 开启
复制

2.4 路由参数传递

​​​​params​​​​参数传递
路由文件index.js
JSON
自动换行 开启
复制
tips: 对象写法必须需要​​​​name​​​​属性
组件
JSON
自动换行 开启
复制
​​​​query​​​​参数传递
组件
JSON
自动换行 开启
复制

2.5 路由参数相关面试题

1
路由传递参数(对象写法)​​​​path​​​​是否可以结合​​​​params​​​​参数一起使用? 答:不可以。​​​​params​​​​参数跳转必须结合​​​​name​​​​属性使用
2
如何指定​​​​params​​​​参数可传可不传? 答: 在路由文件​​​​index.js​​​​中配置​​​​path​​​​属性加问号​​​​path:"/search:keyword?"​​​​
3
​​​​params​​​​参数如果传递的是空串如何解决? 答: ​​​​this.$router.push({name: 'search', params: {keyword: '' || undefined}​​​​
4
路由组件能不能传递props数据?
此时组件会多一个$attr属性
JSON
自动换行 开启
复制

2.6 编程式导航跳转报错​​​​NavigationDuplicated(重复导航)​​​​

原因分析:最新版的​​​​vue-router​​​​引用了​​​​promise​​​​
解决措施:使用编程式路由导航必须加成功与失败的回调 ​​​​this.$router.push({ path: "/search", query: { keyword: this.keyword } },(success)=>{},(err)=>{});​​​​
解决措施2:重写​​​​VueRouter.push​​​​方法
目录
1. 启动项目准备
2. 路由相关配置
2.1 路由配置流程
2.2 路由相关参数说明
2.3 路由元信息
2.4 路由参数传递
2.5 路由参数相关面试题
2.6 编程式导航跳转报错NavigationDuplicated(重复导航)