路由vue-router--官方路由管理器

本文详细介绍了Vue Router的使用方法,包括基本配置、动态路由、嵌套路由、命名路由、编程式导航以及导航守卫。通过实例展示了如何设置路由链接、定义组件、创建路由规则、进行路由重定向、传递参数以及实现组件间的导航。同时,还涵盖了在路由中捕获参数和使用命名路由进行编程式导航的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

路由vue-router–官方路由管理器

提取的hash值:#/keji (想只拿到keji), location.hash.slice(1)

一、步骤

1.导入js文件
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
2.添加路由链接
 <router-link to="/user">User</router-link>

( 会渲染成 的效果 )

3.添加路由占位符
<router-view></router-view>

4.定义路由组件
 const User = {
      template: '<h1>User 组件</h1>'
    }
5.配置路由规则、创建路由实例
 const router = new VueRouter({
      routes: [
        { path: '/user', component: User },
        { path: '/rejister', component: Rejister }
      ]
    })

(这里的 routes 容易写错为router,routers)

6.把路由挂载到Vue根实例中
const vm = new Vue({
      el: '#app',
      // 挂在路由实例对象
      // router:router
      router
    })
7.路由重定向

回到根路径时,会自动跳转到 ‘/user’ 页面

 { path: '/', redirect: '/user' }

二、嵌套路由

const Rejister = {
      template: `<div>
        <h1>Rejister 组件</h1>
        <hr/>
        // 嵌套子组件
        <router-link to="/rejister/tab01">Tab01</router-link>
        <router-link to="/rejister/tab02">Tab02</router-link>
        <router-view></router-view>
        </div>`,
    }

父组件通过 children:[ ] 属性配置子级路由

 const router = new VueRouter({
      routes: [
       // 父级路由
       { path: '/user', component: User },
       { path: '/rejister',
         component: Rejister, 
         children: [
            // 子级路由
           { path: '/rejister/tab01', component: Tab01 },
           { path: '/rejister/tab02', component: Tab02 }
         ]
        }
      ]
    })

子组件在父组件的模块展示时的重定向

注意:redirect: ‘/rejister/tab01’

const router = new VueRouter({
      routes: [
        {
          path: '/',
          component: App,
          //路由重定向
          redirect: '/users',
          children: [
            // 配置子路由对象
            { path: '/users', component: Users },
            { path: '/rights', component: Rights },
            { path: '/goods', component: Goods },
            { path: '/orders', component: Orders },
            { path: '/settings', component: Settings }
          ]
        }
      ]
    })

三、动态匹配路由

获取参数
 const router = new VueRouter({
   routes: [{ path: '/user/:id', component: User }]
 })

注意:动态绑定 id,要在 id 前加 冒号 :

路由组件通过 $route.params 获取路由参数

const User = {
  template: '<h1>User 组件-----当前用户id为: {{$route.params.id}}</h1>'
}
路由组件传递参数
1.props的值为布尔值
 const router = new VueRouter({
   routes: [{ path: '/user/:id', component: User,props: true }]
 })

需要props数组,接受参数

const User = {
  props:['id'],
  template: '<h1>User 组件-----当前用户id为: {{id}}</h1>'
}
2.props的值为对象类型
 const router = new VueRouter({
   routes: [{ path: '/user/:id', component: User,props: {
     name:'lisi',age:18 } 
   }]
 })

注意:name : ’ lisi ’ ,是 : ,不是 等号

const User = {
  // props为数组
  props:['id','name','age'],
  template: '<h1>User 组件-{{id}}-{{name}}--{{age}}</h1>'
}

此时id没有参数传过来

3.props的值为函数类型
 const router = new VueRouter({
    routes: [{ path: '/user/:id', component: User, props: route => ({
      uname: 'lisi',
      age: 18,
      id: route.params.id
      })
    }]
  })

注意:route.params.id,没有 $ 符号

const User = {
  props:['id','name','age'],
  template: '<h1>User 组件-{{id}}-{{name}}--{{age}}</h1>'
}

注意:props 仍为数组

四、命名路由

 const router = new VueRouter({
    routes: [{ 
      name:'user', 
      path: '/user/:id', 
      component: User, props: route => ({
        uname: 'lisi',
        age: 18,
        id: route.params.id
      })
    }]
  })

添加了 name:‘user’

注意格式: 键值对

  <router-link to="/user/2">User2</router-link>
  <router-link :to="{name:'user', params:{id:3}}">User3</router-link>

注意:to 前面要有 冒号:,动态绑定

五、编程式导航

1.利用编程式导航API

注意区分 this.$router.push(’ ') 和 $route.params.id (处于活跃的路由?)

  • this.$router.push(‘hash地址’) 跳转到hash地址

  • this.$router.go(n) 前进或后退 n 位

    点击User页面的按钮—>会跳转到 Register 页面

const User = {
  template: `<div>
    <button @click="goRegister">跳转到注册页面</button></div>`,
  methods: {
    goRegister() {
      this.$router.push('/register')
    }
  }
}

点击Register 页面的按钮—>会跳转到 User页面

const Register = {
  template: `<div><button @click="goBack">后退</button></div>`,
  methods: {
    goBack() {
      this.$router.go(-1)
    }
  }
}
2.router.push( ) 方法的参数规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F4HOSyGK-1632816086742)(file:///C:\Users\Administrator\Documents\Tencent Files\1204014959\Image\C2C\6E5B5CD258DFD321CC3192E50FED0B35.png)]

基于vue-router的案例,要多看

六、安装和使用 vue-router

1.安装 vue-router

npm i vue-router --save

2.在模块化工程中使用

导入路由对象,并且调用 Vue.use(VueRouter)

创建路由实例,并传入路由映射配置

在Vue 实例中挂载路由实例

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

 const router = new VueRouter({
    routes: []
  })

<router-link />  标签
<router-view />  渲染的位置

创建路由的组件: .vue 文件 ?

标签 的属性:

to tag replace active-class

七、导航守卫

主要用来监听路由的进入和离开

vue-router 提供了beforeEach 和 afterEach 的钩子函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值