Vue笔记[二]-路由篇
基本使用
官方文档:vue-router
安装
npm i vue-router,默认安装的是最新版本(只支持 Vue3,Vue2 需要指定版本vue-router@3)
使用步骤
- 创建路由器
- 注册路由
- 使用路由
- 编写路由组件
注意:
- 不断切换路由时,路由组件在重复地销毁和挂载,即重复地经过完整的生命周期
- vue-router 插件会向 vm 和 vc 身上添加
$route(当前路由) 和$router(全局路由器) 两个属性
创建路由器
在 src 目录下新建router/index.js
使用new VueRouter()的方式来创建路由器实例
1 | import VueRouter from 'vue-router'; |
路由规则可以将其提取到当前文件夹的一个文件routes.js
1 | import Home from '@/views/Home'; |
注册路由
在实例化 Vue 对象的时候将创建好的路由器实例当作配置信息
1 | import Vue from 'vue'; |
使用路由
vue-router提供了特殊的标签来使用路由
<router-link> 会自动读取当前的路由模式(hash/history/abstract),并将其自动解析成<a>标签
<router-view> 将指定路由页面显示,如果在<router-view>里面还会使用到<router-view>,那里面的路由信息应该是外面的子路由
编写路由组件
一般将路由组件放到src/views中,声明某个路由地址对应某个页面
路由模式
路由模式决定了:
- 路由从哪里获取访问路径
- 路由如何改变访问路径
vue-router提供了三种路由模式:
hash:默认值。路由从浏览器地址栏中的 hash 部分获取路径,改变路径也是改变的 hash 部分。该模式兼容性最好。
1
2http://localhost:8081/#/blog --> /blog
http://localhost:8081/about#/blog --> /bloghistory:路由从浏览器地址栏的
location.pathname中获取路径,改变路径使用的 H5 的history api。该模式可以让地址栏最友好,但是需要浏览器支持history api1
2
3http://localhost:8081/#/blog --> /
http://localhost:8081/about#/blog --> /about
http://localhost:8081/blog --> /blogabstract:路由从内存中获取路径,改变路径也只是改动内存中的值。这种模式通常应用到非浏览器环境中。
1
2
3内存: / --> /
内存: /about --> /about
内存: /blog --> /blog
无刷新跳转
在点击链接后页面刷新会做下面几件事情
- 请求 index.html
- 请求各种
*.js - 请求各种
*.css - 执行 js
- 创建 vue 应用
- 渲染全部组件树
- 挂载到指定的 div 中
但如果不刷新进行跳转:
- 执行一段 js 代码:切换某个区域的组件
普通点击跳转实现的是:location.href='/'
无刷新跳转实现的是:history.pushState(null, null, '/')
将原本的 a 标签改写
1 | <a href="https://www.baidu.com"></a> |
路径匹配样式
默认情况下,vue-router会用 当前路径 匹配 导航路径 :
- 如果当前路径是以导航路径开头,则算作匹配,会为导航的 a 元素添加类名
router-link-active - 如果当前路径完全等于导航路径,则算作精确匹配,会为导航的 a 元素添加类名
router-link-exact-active
可以为组件RouterLink添加 bool 属性exact,将匹配规则改为:必须要精确匹配才能添加匹配类名router-link-active
另外,可以通过active-class属性更改匹配的类名,通过exact-active-class更改精确匹配的类名
命名路由
使用命名路由可以解除系统与路径之间的耦合
1 | // 路由配置 |
1 | <!-- 向to属性传递路由信息对象 RouterLink会根据你传递的信息以及路由配置生成对应的路径 --> |




![Vue笔记[二]-路由篇](https://api.snailuu.cn/background/2022091731.jpg)
