Vue-Router相关理解4

两个新的生命周期钩子

activateddeactivated是路由组件所独有的两个钩子,用于捕获路由组件的激活状态具体使用

activated路由组件被激活时触发

deactivated路由组件失活时触发

 

src/pages/News.vue

<template><ul><li :style="{opacity}">欢迎学习Vue</li><li>news001 <input type="text"></li><li>news002 <input type="text"></li><li>news003 <input type="text"></li></ul>
</template><script>
export default {name: 'News',data() {return {opacity: 1,}},activated() {console.log('News组件激活了');this.timer = setInterval(() => {this.opacity -= 0.01if (this.opacity <= 0) this.opacity = 1}, 16)},deactivated() {console.log('News组件失活了');clearInterval(this.timer)}
}
</script>

路由守卫

对路由权限进行控制

meta元数据对象

全局路由守卫

src/router/index.js

import VueRouter from 'vue-router'
// 引入组件
import About from '../pages/About'
import Home from '../pages/Home'
import News from '../pages/News'
import Message from '../pages/Message'
import Detail from '../pages/Detail'//创建并暴露一个路由器
const router= new VueRouter({routes: [{name:'guanyu',path: '/about',component: About,meta:{title:'关于'}},{name:'zhuye',path: '/home',component: Home,meta:{title:'主页'},children: [{name:'xinwen',path: 'news',component: News,meta:{isAuth:true,title:'新闻'}},{name:'xiaoxi',path: 'message',component: Message,meta:{isAuth:true,title:'消息'},children: [{name:'xiangqing',// path: 'detail/:id/:title',  //使用占位符声明接收params参数path:'detail',  //使用query参数component: Detail,meta:{isAuth:true,title:'详情'},//第一种写法:props值为对象,该对象中所有的key-value的组合都会通过props传给Detail组件// props:{a:'100',b:'1'},//第二种写法:props值为true,则把路由收到的所有params参数通过props传给Detail组件// props:true,//第三种写法:props值为函数,该函数返回的对象中每一组key-value都会通过props传给Detail组件props($route){return{id:$route.query.id,title:$route.query.title}}}]}]}]
})// 全局前置路由守卫--初始化的时候、每次路由切换之前被调用
router.beforeEach((to,from,next)=>{console.log('beforeEach',to,from)if(to.meta.isAuth){ //判断是否需要鉴权if(localStorage.getItem('school')==='atguigu'){next()}else{alert('学校名不对,无权限查看!')}}else{next()}
})// 全局路由后置守卫--初始化的时候、每次路由切换之后被调用
router.afterEach((to,from)=>{console.log('afterEach',to,from)document.title=to.meta.title||'硅谷系统'
})export default router

独享路由守卫beforeEnter

src/router/index.js 

import VueRouter from 'vue-router'
// 引入组件
import About from '../pages/About'
import Home from '../pages/Home'
import News from '../pages/News'
import Message from '../pages/Message'
import Detail from '../pages/Detail'//创建并暴露一个路由器
const router = new VueRouter({routes: [{name: 'guanyu',path: '/about',component: About,meta: { title: '关于' }},{name: 'zhuye',path: '/home',component: Home,meta: { title: '主页' },children: [{name: 'xinwen',path: 'news',component: News,meta: { isAuth: true, title: '新闻' },// 独享前置路由守卫beforeEnter: (to, from, next) => {console.log('beforeEach', to, from)if (to.meta.isAuth) { //判断是否需要鉴权if (localStorage.getItem('school') === 'atguigu') {next()} else {alert('学校名不对,无权限查看!')}} else {next()}}},{name: 'xiaoxi',path: 'message',component: Message,meta: { isAuth: true, title: '消息' },children: [{name: 'xiangqing',// path: 'detail/:id/:title',  //使用占位符声明接收params参数path: 'detail',  //使用query参数component: Detail,meta: { isAuth: true, title: '详情' },//第一种写法:props值为对象,该对象中所有的key-value的组合都会通过props传给Detail组件// props:{a:'100',b:'1'},//第二种写法:props值为true,则把路由收到的所有params参数通过props传给Detail组件// props:true,//第三种写法:props值为函数,该函数返回的对象中每一组key-value都会通过props传给Detail组件props($route) {return {id: $route.query.id,title: $route.query.title}}}]}]}]
})// 全局路由后置守卫--初始化的时候、每次路由切换之后被调用
router.afterEach((to, from) => {console.log('afterEach', to, from)document.title = to.meta.title || '硅谷系统'
})export default router

 

组件内路由守卫

从/home跳转到/about前触发beforeRouteEnter,从/about跳转到/test前触发beforeRouteLeave

src/pages/About.vue

<template><h2>我是About的内容</h2>
</template><script>
export default {name: 'About',beforeRouteEnter (to, from, next) {console.log('About--beforeRouteEnter',to,from);if(localStorage.getItem('school')==='atguigu'){next()}else{alert('学生名不对,无权查看!')}},beforeRouteLeave(to, from, next){console.log('About--beforeRouteLeave',to,from);next()}
}
</script>

路由器的两种工作模式

 

const router=new VueRouter({mode:'history',routes:[...]
})export default router

项目打包npm run build

demo目录下

第一步:npm init出现package name:atguigu_test_server

第二步:npm i express

第三步:打开npmjs.com网站搜索connect-history-api-fallback

npm i connect-history-api-fallback

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/29071.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自洽性改善语言模型中的思维链推理

自洽性改善语言模型中的思维链推理 摘要介绍对多样化路径的自洽实验实验设置主要结果当CoT影响效率时候&#xff0c;SC会有所帮助与现有方法进行比较附加研究 相关工作总结 原文&#xff1a; 摘要 本篇论文提出了一种新的编码策略——自洽性&#xff0c;来替换思维链中使用的…

对Element DatePicker时间组件的封装,时间组件开始时间和结束时间绑定

背景 我们时常有时间范围选择&#xff0c;需要选择一个开始时间和一个结束时间给后端&#xff0c;但我们给后端的是两个字段&#xff0c; 分别是开始时间和结束时间&#xff0c;现在使用element绑定的值是一个数组&#xff0c;我们还要来回处理&#xff0c;很麻烦列表也的查询…

解决appium-doctor报ffmpeg cannot be found

一、下载ffmpeg安装包 https://ffmpeg.org/download.html 找到如图所示红框位置点击下载ffmpeg安装包。 二、配置ffmpeg环境变量 三、检查ffmpeg版本信息 重新管理员打开dos系统cmd命令提示符&#xff0c;输入ffmpeg查看是否出现版本信息&#xff0c;安装完好。 ffmpeg

面试题:redis是单线程、StringBuffer是线程安全的

1、说明String 和StringBuffer的区别 类底层/ 可变&#xff1f;线程安全Stringfinal char[] 不可变是StringBuffer char[] 可变 是&#xff08;synchronized方法&#xff09;StringBuilder char[] 可变否 (4条消息) Java基础&#xff1a;String、StringBuffer、…

Selenium自动化之弹窗处理

1.前言 我们在使用Selenium做Web自动化测试时&#xff0c;页面经常出现弹窗&#xff0c;如果不处理后续的测试脚本就无法正常运行&#xff0c;今天我们就带大家一起来学习如何处理Web页面上的弹窗。 2.Web页面弹窗的分类 弹窗通常有3种&#xff1a;Alert类型弹框、Confirm类…

【操作系统】Liunx项目自动化构建工具-make/Makefile

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 一、背景 二、Makefile 实现 Makefile依赖 依赖关系 makefile的工作原理 项目清理 补充&#xff1a; .PHONY是什么&#xff1f; Linux如何进行多行注释&#xff1a; 说明&#xf…

微服务部署架起App运维的高速通道

今天来说下微服务&#xff0c;我们知道微服务在 App 开发中具备模块化开发、独立部署扩展、问题隔离等特点&#xff0c;这种微服务架构模式能够使应用程序更具弹性、可扩展和可维护&#xff0c;能够更好地应对快速变化的需求和规模的增长。 准备通过系统的梳理说一说微服务部署…

mongodb集群搭建

下载地址&#xff1a; https://www.mongodb.com/try/download/community下载mongodb-linux-x86_64-rhel70-5.0.18 搭建集群 tar -zxvf mongodb-linux-x86_64-rhel70-5.0.18.tgz mkdir -p data/dp cd mongodb-linux-x86_64-rhel70-5.0.18 mkdir -p data/db mkdir log mkdir c…

【C++】-list的具体使用

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

4. 设计(黑盒)测试用例 (一) 等价类 边界值 判定表

本篇文章我们将详细介绍如何来测试用例。 1. 设计测试用例的基本要素 1.1 测试用例概念 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合。 1.2 测试用例要素 测试环境、测试步骤、测试数据、预期结果。 1.3 测试用例的重要性 提…

未来Mac下载站怎么打不开了

重要公告&#xff1a; 未来软件园因业务需要现更换域名 原域名&#xff1a;Mac.orsoon.com 更为新域名&#xff1a;未来mac下载-Mac软件-mac软件下载-mac软件大全 程序已全面转移&#xff0c;请访问新域名

Pycharm远程服务器上运行程序报错:Can‘t get remote credentials for deployment server

一、问题描述&#xff1a; 二、解决方法&#xff1a; 1.依次选择 文件 -> 设置 -> 项目 -> Python 解释器,出现如下界面&#xff1a; 2. 点击python 解释器右侧的小齿轮&#xff0c;选择全部显示&#xff1a; 3. 在弹出的窗口中发现存在多个连接到同一个服务器的解释…