我的编程空间,编程开发者的网络收藏夹
学习永远不晚

快速掌握VueRouter使用方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

快速掌握VueRouter使用方法

本篇博客会介绍Vue中的VueRouter的基本使用,编程式路由导航增加了我们进行路由跳转的灵活性,缓存路由组件保障了我们使用路由时的便捷性,生命周期钩子为我们切入切出路由时提供了初始化与善后的工作,路由守卫保障了我们路由组件的安全性,路由工作模式会使我们理解为啥Vue项目中的路由会有一个#,通过本篇博客会让大家快速掌握Vue中路由的基本使用。

一、编程式路由导航

作用:不借助<router-link> 实现路由跳转,让路由跳转更加灵活

具体编码:

//$router的两个API
this.$router.push({
   name:'xiangqing',
   	params:{
   		id:xxx,
   		title:xxx
   	}
})
this.$router.replace({
   name:'xiangqing',
   	params:{
   		id:xxx,
   		title:xxx
   	}
})
this.$router.forward() //前进
this.$router.back() //后退
this.$router.go() //可前进也可后退

二、缓存路由组件

在上一篇博客中也提到过,路由对应的组件随着路由的切换来而被激活,随着路由的切换走而失活被销毁,在我们使用WebApp的时候当然不希望这样的事情发生,我们希望即使有路由的切换,也要保持原有的组件不被销毁。而缓存路由组件技术就可以完美的解决这个问题,只是在实现这一功能是会以一定的程序效率作为代价。下面咱们一起看一看如何实现路由对应组件的保活。使用到的标签是<keep-alive include="News"> </keep-alive>

作用:让不展示的路由组件保持挂载,不被销毁。

具体编码:

<keep-alive include="News"> 
    <router-view></router-view>
</keep-alive>

三、两个新的声明周期钩子

作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态。

具体名字:

  • activated路由组件被激活时触发。
  • deactivated路由组件失活时触发。
<template>
  <ul>
    <li :style="{opacity}">欢迎学习Vue</li>
    <li v-for="p in messageList" :key="p.id">{{p.title}} <input type="text"></li>
  </ul>
</template>
<script>
export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "News",
  props:['id','title'],
  data() {
    return {
      messageList: [
        { id: "001", title: "消息001" },
        { id: "002", title: "消息002" },
        { id: "003", title: "消息003" },
      ],
      opacity:1
    };
  },
  activated() {
  			// 开启一个定时器,调整组件透明度
			console.log('News组件被激活了')
			this.timer = setInterval(() => {
				console.log('@')
				this.opacity -= 0.01
				if(this.opacity <= 0) this.opacity = 1
			},16)
		},
  deactivated() {
  	  //关闭定时器
      console.log('News组件失活了')
      clearInterval(this.timer)
  },
};
</script>
<style>
</style>

四、路由守卫

路由守卫中可以进行页面权限的验证,没有权限就没有办法进入到相应的页面之中。

作用:对路由进行权限控制

分类:全局守卫、独享守卫、组件内守卫

全局守卫(所有组件间路由跳转时都需要经过这两个守卫):

//全局前置守卫:初始化时执行、每次路由切换前执行
router.beforeEach((to,from,next)=>{
	console.log('beforeEach',to,from)
	if(to.meta.isAuth){ //判断当前路由是否需要进行权限控制
		if(localStorage.getItem('school') === 'atguigu'){ //权限控制的具体规则
			next() //放行
		}else{
			alert('暂无权限查看')
			// next({name:'guanyu'})
		}
	}else{
		next() //放行
	}
})
//全局后置守卫:初始化时执行、每次路由切换后执行
router.afterEach((to,from)=>{
	console.log('afterEach',to,from)
	if(to.meta.title){ 
		document.title = to.meta.title //修改网页的title
	}else{
		document.title = 'vue_test'
	}
})

上述两个函数,参数中都有from 与to,这两个是路由守卫中超级重要的角色,权限验证一般都有参照这两个参数进行。

除此之外前置守卫还有一个next参数,这个参数负责放行。可总结如下:

  • from:原始路由的一些基本信息
  • to:将要跳转的路由基本信息
  • next:如果不传参数为放行,就是跳转到to指定的路由,如果传参就跳转到参数指定的路由next(“/login”)

4.独享守卫:这种守卫方式只针对包含特定属性的路由起作用例如下面一个例子,前置路由守卫,只有要跳转的路由中的属性isAuth为true时才进入判断其他条件,否则会直接放行。通常我们会将用到的属性在路由配置里定义在meta中。

{
    name:"aboutroot",
    path:"/about",
    component:About,
    meta:{
        isTrue:true
    }
},
beforeEnter(to,from,next){
	console.log('beforeEnter',to,from)
	if(to.meta.isAuth){ //判断当前路由是否需要进行权限控制
		if(localStorage.getItem('school') === 'atguigu'){
			next()
		}else{
			alert('暂无权限查看')
			// next({name:'guanyu'})
		}
	}else{
		next()
	}
}

当然除了可以在meta中进行权限区分属性的定义,还可以做一些全局的配置,例如跳转路由之后的页面页签。

{
    name:"aboutroot",
    path:"/about",
    component:About,
    meta:{
        isTrue:true
        title:"About组件"
    }
},

使用:

这时当进入about组件时,就会显示页签为About组件,为了防止出错,我们做一些特殊处理以下代码在路由没有meta.title属性是会显示默认页签在页面的页签上。

router.afterEach((to,from)=>{
    console.log(to,from)
    document.title=to.meta.title || "默认页签"
})

效果如下面两个图片。

5.组件内守卫

下面两个路由执行的时间是在进入相应路由之前执行以及离开这个路由之前执行,可以进行鉴权。

//进入守卫:通过路由规则,进入该组件时被调用
beforeRouteEnter (to, from, next) {
},
//离开守卫:通过路由规则,离开该组件时被调用
beforeRouteLeave (to, from, next) {
}

下面一个实例表示在进入这个组件时先判断这个组间有没有isTrue属性,然后判断本地存储的学校是不是nylg,只有经过两层验证之后才可以进入该组件,否则将提示进不去。

<template>
  <div class="col-xs-6">
    <div class="panel">
      <div class="panel-body">
        <h2>我是About的内容</h2>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "About",
  beforeRouteEnter(to,from,next){
    // alert("想要进入组件!")
    if(to.meta.isTrue){
      if(localStorage.getItem("school")==="nylg"){
        next()
      }else{
        alert("您无权进入!")
      }
    }else{
      alert("组件不允许进入!")
    }
  },
  //通过路由规则,离开该组件时被调用
  beforeRouteLeave (to, from, next) {
    console.log('About--beforeRouteLeave',to,from)
    next()
  }
};
</script>
<style>
</style>

五、路由器的两种工作模式

对于一个url来说,什么是hash值?—— #及其后面的内容就是hash值。

hash值不会包含在 HTTP 请求中,即:hash值不会带给服务器。

hash模式:

  • 地址中永远带着#号,不美观 。
  • 若以后将地址通过第三方手机app分享,若app校验严格,则地址会被标记为不合法。
  • 兼容性较好。

history模式:

  • 地址干净,美观 。
  • 兼容性和hash模式相比略差。
  • 应用部署上线时需要后端人员支持,解决刷新页面服务端404的问题。

进行history配置会很麻烦,而且使用Vue时语法上要有一些改变,所以如果不是大型公司或者大型项目使用hash模式即可。感兴趣的同学也可以自己探索history模式。

到此这篇关于快速掌握Vue Router使用方法的文章就介绍到这了,更多相关Vue Router内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

快速掌握VueRouter使用方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

快速掌握VueRouter使用方法

VueRouter是Vue.js官方的路由管理器。它和Vue.js的核心深度集成,让构建单页面应用变得易如反掌。路由实际上就是可以理解为指向,就是我在页面上点击一个按钮需要跳转到对应的页面,这就是路由跳转
2023-01-09

快速掌握Node.js中setTimeout和setInterval的使用方法

Node.js和js一样也有计时器,超时计时器、间隔计时器、及时计时器,它们以及process.nextTick(callback)函数来实现事件调度。今天先学下setTimeout和setInterval的使用。 一、setTimeout
2022-06-04

快速掌握CSS框架的方法

简明易懂:CSS框架如何快速上手,需要具体代码示例简介:CSS框架是前端开发中常用的工具,它可以帮助我们快速构建美观且响应式的网页。然而,对于初学者来说,学习并使用CSS框架可能会有一定的困难。本篇文章将简要介绍CSS框架的基本概念,并提
快速掌握CSS框架的方法
2024-01-16

快速掌握Fedora 17的方法详解

要快速掌握Fedora 17,可以按照以下步骤进行:1. 下载和安装Fedora 17:首先,您需要从官方网站上下载Fedora 17的安装镜像文件。然后,将该镜像烧录到一张空白光盘或创建一个可引导的USB驱动器。最后,将该光盘或USB驱动
2023-09-23

快速掌握Node.js模块封装及使用

Node.js中也有一些功能的封装,类似C#的类库,封装成模块这样方便使用,安装之后用require()就能引入调用. 一、Node.js模块封装1.创建一个名为censorify的文件夹2.在censorify下创建3个文件censort
2022-06-04

快速掌握java排序算法-快速排序(图文)

概念快速排序属于交换排序,主要步骤是使用基准元素进行比较,把小于基准元素的移动到一边,大于基准元素的移动到另一边。从而把数组分成两部分,然后再从这两部分中选取出基准元素,重复上面的步骤。过程如下:(推荐视频:java视频教程) 紫色:基准元素绿色:大于基准元
快速掌握java排序算法-快速排序(图文)
2017-05-20

Python如何快速上手? 快速掌握一门新语言的方法

那么Python如何快速上手?找来了一篇广受好评的新语言学习方法介绍,供大家参考。 听说,你决定要为你的 “技能树” 再添加一门特定的编程语言。那该怎么办呢? 在这篇文章中,作者提出了 12 项关于学习技术的建议。记住每个人学习的方式都不一
2022-06-04

怎么快速掌握有关VS2003使用问题

小编给大家分享一下怎么快速掌握有关VS2003使用问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!假如你在你的 web 应用中编写了自定义的客户端JavaScr
2023-06-17

怎么快速掌握Python基础语法

本篇内容主要讲解“怎么快速掌握Python基础语法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么快速掌握Python基础语法”吧!  一、python编码  默认情况下, Python 源码
2023-06-02

如何快速掌握Adam优化算法

这篇文章主要讲解了“如何快速掌握Adam优化算法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何快速掌握Adam优化算法”吧!本教程分为三个部分:他们是: 梯度下降 Adam优化算法 Ad
2023-06-15

快速掌握在Linux上安装Go语言的方法

在Linux上安装Go语言是开发者们开始使用这门编程语言的第一步。Go语言是一门由Google开发的开源编程语言,其简单易学的特点吸引了众多开发者的青睐。本文将介绍如何在Linux系统上快速安装Go语言,并提供具体的代码示例以帮助读者快速上
快速掌握在Linux上安装Go语言的方法
2024-03-13

快速掌握Node.js环境的安装与运行方法

安装程序 NodeJS 提供了一些安装程序,都可以在 nodejs.org 这里下载并安装。 Windows 系统下,选择和系统版本匹配的 .msi 后缀的安装文件。Mac OS X 系统下,选择 .pkg 后缀的安装文件。 编译安装 Li
2022-06-04

编程热搜

目录