Vue路由

85 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情juejin.cn/post/714765… 今天给大家分享一下Vue路由。 Vue Router是Vue.js官方的路由管理器。它和Vue.js

安装方式

  • 使用NPM安装,那就需要在main.js里把路由注入到Vue实例上。
  • 安装步骤:是已经安装完vue2的环境了,然后在终端下载依赖,命令如下: cnpm i vue-router@3 -D在vue2中使用。
  • 下载好依赖之后,在main.js里引入,import VueRouter from "vue-router",然后把VueRouter添加到Vue实例上。
import Vue from "vue"
import VueRouter from "vue-router"

Vue.use(VueRouter);//注册路由

我们现在用的是history模式路由 view文件夹里放的是一级路由的组件 components里放的是非路由组件。也就是作为路由组件的子组件存在的。

router文件夹下的index.js做了哪些事情?

  1. 引入vue和vue-router。
  2. 又引入了一个子组件,用来跳转
  3. 注册路由
  4. 设置路由的匹配规则
  5. 构造路由对象,最终生成的就是在组件里使用的路由对象。 mode属性:告诉路由使用哪种模式跳转 base: routes:把设置好的路由匹配规则放在这里

1.png

main.js里做了什么?

把上面暴露出来的路由对象作为vue根实例的router属性存进去。

2.png

  • this.$router可以访问我们new出来的路由器对象
  • 动态路由指的就是路由之间传值,其实指的就是通配符params。可以用params传id,然后id不同渲染的是不同的组件页面。
  • 动态参数指的就是动态路径参数。不同的人可以传不同的数据过去,它使用起来就是和params没什么两样。
  • 接收动态路径传过来的参数。

如何通过params设置动态的路由传值?

<router-link :to={name:'',params:{属性名:要传的属性值}></router-link>

响应路由参数的变化

传的路由参数变化了,路由组件在模板里接收的route.params.username没变,是因为组件两次渲染的都是同一个,采取了就地复用,想让传的数据成为响应的,可以利用watch监听route.params.username没变,是因为组件两次渲染的都是同一个,采取了就地复用,想让传的数据成为响应的,可以利用watch监听`route`。

1.png

router-link组件

  • 属性1:replace添加该属性,那么就没有历史记录了,点击浏览器前进后退就不生效了。
  • 属性2:append设置 append 属性后,则在当前 (相对) 路径前添加基路径。例如,我们从 /a 导航到一个相对路径 b,如果没有配置 append,则路径为 /b,如果配了,则为 /a/b
  • 属性3:tag="span"就会把<router-link>转换成我们想要的标记,默认是超链接a
  • 属性4:active-class。它是不精准匹配
  • 属性5:精准匹配通过类名.router-link-exact-active