Web前端开发之VUE15——Vue路由大全、编程式导航、导航守卫

本文详细介绍了如何通过锚链接Hash实现简单的前端路由,并深入探讨了vue-router的安装、配置和使用,包括路由重定向、高亮、嵌套、动态匹配、编程式导航和命名路由。同时,讲解了导航守卫的使用,特别是next函数的三种调用方式,以及如何结合token进行访问权限控制。

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

目录

路由:

通过锚链接Hash实现简易前端路由的方法:

 vue-router: 

 vue-router的安装:

 配置和使用vue路由:

 vue-router高级用法:

路由重定向:

 路由高亮:

自定义高亮class类名:

 嵌套路由:

 实现嵌套路由:

嵌套路由的重定向:

动态路由匹配:

 获取动态路由参数值: 

 编程式导航:

 命名路由:

导航守卫:

守卫方法的3个参数:

next函数的使用和3种调用方式:

 结合token控制访问权限:


路由:

 

 

通过锚链接Hash实现简易前端路由的方法:

 

 示例代码:

<template>
  <div>
    <ul>
      <li><a href="#/home">Home</a></li>
      <li><a href="#/img">Img</a></li>
      <li><a href="#/about">About</a></li>
    </ul>
    <component :is="certainTab"></component>
  </div>
</template>

<script>
import Home from "./components/路由/利用components实现页面切换/Home.vue"
import Img from "./components/路由/利用components实现页面切换/Img.vue"
import About from "./components/路由/利用components实现页面切换/About.vue"

export default {
  components: {
    myHome: Home,
    myImg: Img,
    myAbout: About,
  },
  data(){
    return{
      certainTab:'myHome'
    }
  },
  created() {
    window.onhashchange=()=>{
      switch (location.hash){
        case '#/home':{
          this.certainTab='myHome'
          break
        }
        case '#/img':{
          this.certainTab='myImg'
          break
        }
        case '#/about':{
          this.certainTab='myAbout'
          break
        }
      }
    }
  }
}
</script>

 vue-router: 

 

 vue-router的安装:

 

 

完成上面的步骤后会出现错误提示:

由于vue-router是一个外部组件包,所以需要在配置后才可以使用。

 配置和使用vue路由:

 

 示例代码:

//router.js
import {createRouter,createWebHashHistory} from 'vue-router'

import Home from './Home.vue'
import Img from './Img.vue'
import About from './About.vue'

const router= createRouter({
  history:createWebHashHistory(),
  routes:[
    {path:'/home',component:Home},
    {path:'/img',component:Img},
    {path:'/about',component:About},
  ]
})

export default router
//main.js
import router from './components/路由/vue-router的基础实现/router'

//挂载路由模块
app.use(router)

//app.vue
<template>
  <div>
    <ul>
      <li><router-link to="/home">Home</router-link></li>
      <li><router-link to="/img">Img</router-link></li>
      <li><router-link to="/about">About</router-link></li>
    </ul>
    <router-view></router-view>
  </div>
</template>

 vue-router高级用法:

路由重定向:

 路由高亮:

 

 示例代码:

.router-link-active{
  color: red;
  background-color: #cccccc;
}

自定义高亮class类名:

 嵌套路由:

 实现嵌套路由:

 

 注意:子路由路径无需‘/’

嵌套路由的重定向:

原理与普通路由重定向一样。

示例代码:

//子路由的创建
    {
      path: '/about',
      component: About,
      redirect:'/about/Tab1',
      children: [
        {path: 'Tab1', component: Tab1},
      ]
    },

动态路由匹配:

 

 获取动态路由参数值: 

 编程式导航:

 

 

 

 命名路由:

 示例代码:

<router-link :to="{name:'movie',params:{id:1}}">跳转到电影1</router-link>
  <router-link :to="{name:'movie',params:{id:2}}">跳转到电影2</router-link>
  <router-link :to="{name:'movie',params:{id:3}}">跳转到电影3</router-link>
  <router-view></router-view>

 

 示例代码:

    jumpUrl(getMovieId){
      // this.$router.push(`/movie/${getMovieId}`)
      this.$router.push({name:'movie',params: {id:getMovieId}})
    }

同样也是传递一个对象。命名路由多用于路径繁琐、过长的情景下。

导航守卫:

 示例代码:

//声明全局导航守卫
router.beforeEach(()=>{
  console.log('已启用导航守卫')
})

守卫方法的3个参数:

 示例代码:

router.beforeEach(
    (to,
     from,
     next) => {
      console.log(`to:${to}`)
      console.log(`from:${from}`)
      console.log(`next:${next}`)
      console.log('已启用导航守卫')
    })

next函数的使用和3种调用方式:

 

 结合token控制访问权限:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言行物恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值