VueRouter路由

目录

一、路由的基本使用

二、多级路由

三、路由的query参数

四、命令路由

五、路由的params参数

六、路由的props配置

七、router-link的replace的属性

八、编程式路由导航

九、缓存路由组件

十、全局路由守卫

十二、组件内部路由守卫

十三、history模式和hash模式

十四、使用路由元信息(meta)设置页面标题


一、路由的基本使用

//该文件专门用于创建整个应用的路由器import VueRouter from "vue-router";
import About from "@/components/About";
import Home from '@/components/Home';//创建并默认暴露一个路由器
export default new VueRouter({routes:[{path:'/about',component: About},{path:'/home',component: Home}]
});
 <router-link class="list-group-item" active-class="active" to="/about">About</router-link><router-link class="list-group-item" active-class="active" to="/home">Home</router-link>

二、多级路由

//该文件专门用于创建整个应用的路由器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";//创建并默认暴露一个路由器
export default new VueRouter({routes:[{path:'/about',component: About},{path:'/home',component: Home,children:[{path: 'news',component: News},{path: 'message',component: Message}]}]
});
  <router-link class="list-group-item" active-class="active" to="/about">About</router-link><router-link class="list-group-item" active-class="active" to="/home">Home</router-link>

三、路由的query参数

<!---跳转路由并携带query参数,to的字符串写法-->
<!--<router-link :to="`/home/message/detail?id=${m.id}&title=${m.title}`">{{ m.title }}</router-link>&nbsp;&nbsp;-->
<!---跳转路由并携带query参数,to的对象写法-->
<router-link:to="{path:'/home/message/detail',query:{id: m.id,title: m.title}}">
<template><ul><li>消息编号:{{ $route.query.id }}</li><li>消息标题:{{ $route.query.title }}</li></ul>
</template>

四、命令路由

export default new VueRouter({routes:[{name: 'regard',path:'/about',component: About}]
});
<router-link:to="{// path:'/home/message/detail',name: 'particulars', //利用路由名字直接跳转路由简化多级路由的path配置query:{id: m.id,title: m.title}}">

五、路由的params参数

 <router-link:to="{// path:'/home/message/detail',name: 'particulars', //利用路由名字直接跳转路由简化多级路由的path配置//注意如果你这里使用params传递参数,不能配置path,只能配置name,一定要注意params: {id: m.id,title: m.title}}">{{ m.title }}</router-link>
<template><ul><li>消息编号:{{ $route.params.id }}</li><li>消息标题:{{ $route.params.title }}</li></ul>
</template>

六、路由的props配置

  {path: 'message',component: Message,children:[{name: 'particulars',path: 'detail/:id/:title',component: Detail,//props的第一种写法值为对象,该对象的所有key-value都会以props的形式传给detail组件(死数据)// props:{//     a:1,//     b:'hello'// }//props的第二种写法,值为布尔值,布尔值为真,就会把该路由组件收到的所有params(注意如果是query参数不会奏效的)参数以props的形式传递给detail组件// props: true//props的第三种写法,值为函数  $route.query.idprops({ query: { id, title } }){return {id,title}}}],}]}

七、router-link的replace的属性

  <router-link replace class="list-group-item" active-class="active" to="/home/news">News</router-link>

八、编程式路由导航

 methods:{pushShow(m){// console.log(this.$router); //router路由器 ==》管理 route路由(一系列key-value的规则)this.$router.push({//这里与router-link的to属性配置形式是一样的name: 'particulars',query:{id: m.id,title: m.title}})},replaceShow(m){this.$router.replace({//这里与router-link的to属性配置形式是一样的name: 'particulars',query:{id: m.id,title: m.title}})}}

九、缓存路由组件

<!--include的值代表要缓存的组件,比如下面代表在Home组件中要缓存News组件(组件名)-->
<!--如果要缓存多个路由组件就改写为:include="['News', 'Message']"-->
<keep-alive include="News"><router-view></router-view>
</keep-alive>

十、全局路由守卫

//全局前置路由守卫
//初始化和在每一次路由切换之前被调用
router.beforeEach((to, from, next) => {// console.log(to, from);console.log('前置路由守卫');const { isAuth } = to.meta;if(isAuth){//代表需要鉴权if(localStorage.getItem('school') === 'wust1') next();//类似于nodejs中间件else alert('无权限');}else{next();}
});//全局后置路由守卫
//初始化和在每一次路由切换之后被调用
router.afterEach(( to, from ) => {console.log('后置路由守卫', to, from);//点击每一个路由都切换西夏document.titleconst { title } = to.meta;document.title = title || 'vue-advance';
})

十一、独享路由守卫

 {name:'homepage',path:'/home',component: Home,meta:{title: '主页'},children:[{name: 'ns',path: 'news',component: News,//meta:路由元信息,可以配置是否需要校验的信息meta:{isAuth: true,title: '新闻'},//独享路由守卫beforeEnter(to,from,next){const { isAuth } = to.meta;if(isAuth){//代表需要鉴权if(localStorage.getItem('school') === 'wust1') next();//类似于nodejs中间件else alert('无权限');}else{next();}}}

十二、组件内部路由守卫

export default {name: "About",mounted() {console.log('The route of About', this.$route);},//组件内路由守卫//与前置和后置是两码事//通过路由规则进入该组件时被调用,注意一定是通过路由规则进入组件,普通的组件装载是不会调用的beforeRouteEnter(to, from, next){console.log('App---beforeRouteEnter');console.log(from, to);const { isAuth } = to.meta;if(isAuth){//代表需要鉴权if(localStorage.getItem('school') === 'wust1') next();//类似于nodejs中间件else alert('无权限');}else{next();}},//通过路由规则离开该组件时被调用beforeRouteLeave(to, from, next){console.log('App---beforeRouteLeave');console.log(from, to);next();}
}
</script>

十三、history模式和hash模式

//创建一个路由器
const router = new VueRouter({//默认开启hash模式mode: 'history'
});

十四、使用路由元信息(meta)设置页面标题

const routes = [{path: '/',name: 'Home',component: Home,meta: { title: '首页' } // 添加meta字段,定义标题},{path: '/about',name: 'About',component: About,meta: { title: '关于我们' } // 添加meta字段,定义标题}
]
router.beforeEach((to, from, next) => {if (to.meta.title) {document.title = to.meta.title + ' - 网站名称';} else {document.title = '网站名称';}next();
});

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

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

相关文章

JavaWeb笔记之前端开发JavaScript

一、引言 1.1 简介 JavaScript一种解释性脚本语言&#xff0c;是一种动态类型、弱类型、基于原型继承的语言&#xff0c;内置支持类型。 它的解释器被称为JavaScript引擎&#xff0c;作为浏览器的一部分&#xff0c;广泛用于客户端的脚本语言&#xff0c;用来给HTML网页增加…

Linux:APP运行与用户态以及内核态、APP收到的信号处理

目录 定义&#xff1a;何为用户态&#xff0c;何为内核态&#xff1f;问题一&#xff1a;app何时进入内核态&#xff0c;何时退出&#xff1f;问题二&#xff1a;app进入/退出内核态时会进行那些操作呢&#xff1f;问题三&#xff1a;app在用户态/内核态处理信号&#xff0c;信…

统计个数并调用--函数设计与实现

#定义函数 count(s) ,统计字符串中小写字母、大写字母、数字的个数&#xff0c;并以字典为结果返回给调用函数。 # (1)判断字符类型 def count(s):#创建字典&#xff0c;用于保存变量dictionary {数字: 0, 小写字母: 0, 大写字母: 0, 其他字符: 0}for c in s:if c.isdigit():d…

AdaBoost提升方法

提升方法的基本思想是通过改变训练样本的权重学习多个分类器&#xff0c;并将这些线性分类器进行线性组合&#xff0c;提高分类性能。 AdaBoost 提高前一轮被分类错误样本的权值&#xff0c;降低前一轮被分类正确的权值&#xff1b;加大分类误差率小的弱分类器。 算法 输入&…

React学习计划-React16--React基础(三)收集表单数据、高阶函数柯里化、类的复习

1. 收集表单数据 包含表单的组件分类 受控组件——页面中所有输入类的DOM,随着输入&#xff0c;把值存维护在状态里&#xff0c;需要用的时候去状态里取值&#xff08;推荐&#xff0c;避免了过渡使用ref&#xff09;非受控组件——页面中所有输入类的DOM&#xff0c;现用现取…

Java 并发编程 —— Fork/Join 框架的原理详解

目录 一. 前言 二. 并发和并行 2.1. 并发 2.2. 并行 2.3. 分治法 三. ForkJoin 并行处理框架的理论 3.1. ForkJoin 框架概述 3.2. ForkJoin 框架原理 3.3. 工作窃取算法 四. ForkJoin 并行处理框架的实现 4.1. ForkJoinPool 类 4.2. ForkJoinWorkerThread 类 4.3.…

MongoDB的原子操作findAndModify和findOneAndUpdate

本文主要介绍MongoDB的原子操作findAndModify和findOneAndUpdate。 目录 MongoDB的原子操作一、findAndModify二、findOneAndUpdate MongoDB的原子操作 MongoDB的原子操作指的是在单个操作中对数据库的数据进行读取和修改&#xff0c;并确保操作是原子的&#xff0c;即要么完全…

Swagger2之SpringBoot集成使用

前言&#xff1a; 我们对于Mybatis-Plus的分享较多&#xff0c;都是接触的一些数据库相关的知识&#xff0c;今天给大家带来的是Swagger2 Swagger2 1.介绍&#xff1a; Swagger2是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化Restful风格的web服务&#xff…

pip 命令及使用

1、安装 pip install package_name 2、卸载 pip uninstall package_name 3、查看 pip list 4、更新 pip install -U package_name

【蓝桥杯】专题练习

前缀和 3956. 截断数组 - AcWing题库 一看到题目很容易想到的思路是对数组求前缀和&#xff0c;然后枚举两个分段点就好&#xff0c;时间复杂度是On^2&#xff0c;n是1e5会t&#xff0c;需要优化。 朴素的代码&#xff0c;会超时&#xff1a; #include <bits/stdc.h> u…

Python自动化神器入门

在日常生活和工作中&#xff0c;我们经常需要重复执行一些鼠标和键盘操作。今天&#xff0c;我们就来介绍一款非常实用的Python库——PyAutoGUI&#xff0c;它可以帮助我们实现鼠标和键盘的自动化操作。 一、PyAutoGUI简介 PyAutoGUI是一个用于模拟鼠标和键盘操作的Python库。…

4-高可用-限流详情

在开发高并发系统时&#xff0c;有很多手段来保护系统&#xff0c;如缓存、降级和限流等。缓存目的是提升系统访问速度和增大系统处理能力&#xff0c;可谓是抗高并发流量的银弹。 而降级是当服务出问题或者影响到核心流程的性能&#xff0c;需要暂时屏蔽掉&#xff0c;待高峰…

亚马逊云科技-如何缩容/减小您的AWS EC2根卷大小-简明教程

一、背景 Amazon EBS提供了块级存储卷以用于 EC2 实例&#xff0c;EBS具备弹性的特点&#xff0c;可以动态的增加容量、更改卷类型以及修改预配置的IOPS值。但是EBS不能动态的减少容量&#xff0c;在实际使用中&#xff0c;用户也许会存在此类场景&#xff1a; 在创建AWS EC2…

【Python】循环语句

一、while循环的基础语法 二、while循环的嵌套应用 三、while循环的嵌套案例 四、for循环的基础语法 五、for循环的嵌套应用 六、循环中断 : break和continue 一、while循环的基础语法 使用while循环的基础应用 while循环语句 while循环注意点 while的条件需得到布尔类型&am…

Web 安全之文件上传漏洞详解

目录 文件上传漏洞的类型 文件上传的攻击方式 文件上传漏洞影响 防护措施 小结 文件上传漏洞是网络安全中的常见问题&#xff0c;通常发生在网站或应用程序允许用户上传文件到服务器的场景。这类漏洞如果被攻击者利用&#xff0c;可能导致数据泄露、非法文件分发、服务器入…

高并发神经网络推理部署

高并发的神经网络推理框架部署 highport 是一款封装神经网络推理的高并发的软件架构&#xff0c;已在ESWEEK 2023年皮肤病检测比赛中获得第一名。 这里记录一下highport的软件架构和几个trick优化 软件架构图 解密模块&#xff1a;我们训练完的模型文件是带加密的&#xff0c;…

2023优秀开源项目获选榜名单(开放原子开源基金会)|JeecgBoot 成功入选

JeecgBoot 是一个开源的企业级低代码开发平台&#xff0c;它成功入选2023年度生态开源项目&#xff0c;这是对其十年坚持开源的认可。作为一个开源项目&#xff0c;JeecgBoot 在过去的十年里一直秉承着开放、共享、协作的理念&#xff0c;不断推动着开源社区的发展。 2023年开放…

在windows上如何干净的卸载一个软件及其快捷方式

可以在控制面板里面卸载&#xff0c;可以卸载掉文件夹及其快捷方式&#xff0c;具体操作如下&#xff1a; 找到-》控制面板\程序\程序和功能 然后右键某一项&#xff0c;即可出现卸载功能项。 卸载不干净的方法&#xff1a;利用软件商店卸载&#xff0c;有可能卸载失败&#x…

maven学习和maven聚合工程搭建

1.学习maven maven的概念 项目管理工具 &#xff0c;对jar进行依赖管理&#xff0c;编译&#xff0c;打包&#xff0c;单元测试&#xff0c;安装&#xff0c;部署&#xff0c;贯穿整个项目 为什么要学maven 要解决的问题&#xff1a; 不同的开发工具开发出来的项目目录结构…

网络通信day5作业

1> 使用select完成TCP客户端程序 客户端: #include<myhead.h>#define FPORT 9999 #define FIP "192.168.125.130"#define KPORT 6666 #define KIP "192.168.125.130"int main(int argc, const char *argv[]) {//创建套接字文件描述符int cfd…