Vue 路由的一些复杂配置
1 # 一、路由的props参数
2 export default new VueRouter({
3 routes:[
4 {
5 name:'guanyu', // 命名路由
6 path:'/about', // 路劲
7 component: About
8 },
9 {
10 path:'/home',
11 component: Home,
12 children:[
13 {
14 path:'messages',
15 component: Messages,
16 children:[
17 {
18 name: 'xiangqing',
19 path: 'message/:id/:title', // params传参
20 component: MessageInfo,
21 // props的第一种写法,值为对象,该对象中的所有key-value都会以props的形式传值给MessageInfo组件。
22 // props: {a:1,b:'hello'},
23
24 // props的第二种写法,值为bool值,为true,就会把该路由组件收到的参数,以props的形式传值给MessageInfo组件。
25 props: true,
26
27 // props的第三种写法,值为函数
28 // props($route){
29 // return {
30 // id: $route.query.id,
31 // title: $route.query.title,
32 // a: 1,
33 // b: 'hello'
34 // }
35 // }
36 }
37 ]
38 },
39 {
40 path:'news',
41 component: News
42 }
43 ]
44 }
45 ]
46 });
47
48 # 二、<router-link>的replace属性
49 # 1.作用:控制路由跳转时操作浏览器历史记录的前进后退模式
50 # 2.浏览器的历史记录有两种写入方式:分别为push和replace,push是追加历史记录,replace是替换当前记录,路由跳转默认是push。
51 # 3.如何开启replace模式:
52 <router-link replace ...>...</router-link>
53
54 # 三、编程式路由导航
55 1.作用:不借助<router-link>实现路由跳转,让路由跳转更灵活
56 2.具体编码:
57 this.$router.push({ // 留痕迹在window.history
58 name: 'xxx',
59 params: {id:xxx,title:'xxx'}
60 });
61 this.$router.replace({// 不留痕迹在window.history
62 name: 'xxx',
63 params: {id:xxx,title:'xxx'}
64 });
65 this.$router.forward(); // 前进,等于window.history.forward()
66 this.$router.back(); // 后退,等于window.history.back()
67 this.$router.go(-2); // 可前进可后退,等于window.history.back()
68
69 # 四、缓存路由组件
70 1.作用:让不展示的路由组件保持挂载,不被销毁
71 2.具体编码:<keep-alive include="News,Meaasges"><router-view></router-view></keep-alive>
72 注意:被<keep-alive>包含的内容会保持挂载不被销毁,include可以指定哪些组件不被销毁,它的值是组件名(也就是组件的name属性值),不填include代表所有都不销毁
73
74 # 五、两个新的声明周期钩子:activated、deactivated
75 1.作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态
76 2.具体名字:activated路由组件被激活时触发,deactivated路由组件失去激活时触发
77
78 # 六、全局守卫路由
79 # 1.全局前置路由守卫——初始化的时候被调用、每次路由切换之前被调用
80 router.beforeEach((to, from, next)=>{
81 console.log('beforeEach', to, from);
82 // if (to.name === 'xinwen' || to.path === '/home/messages'){ // 这里要是有十几二十个的话,就会显得累赘
83 if (to.meta.isAuth){ // 路由的meta属性对象,是专门供我们自定义属性使用的(注意:自定义属性放在其他地方不会生效)
84 if (localStorage.getItem('school')==='BaiYeShu'){
85 next();// 放行
86 console.log('@');
87 }else{
88 alert('学校名不对!')
89 }
90 }else{
91 next();
92 }
93 });
94 # 2.全局后置路由守卫——初始化的时候被调用、每次路由切换之后被调用
95 router.afterEach((to, from)=>{
96 console.log('afterEach', to, from);
97 if (to.meta.title){
98 document.title = to.meta.title
99 }else{
100 document.title = 'vue_test'
101 }
102
103 });
104 export default router;
105 # 3.独享路由(配置在路由内部)
106 {
107 path:'news',
108 component: News,
109 meta:{isAuth: true, title: '新闻'}, // 路由的meta属性对象
110 beforeEnter(to, from, next){ // 这就是独享路由,内容参数和beforeEach没区别
111 console.log('beforeEnter', to, from);
112 // if (to.name === 'xinwen' || to.path === '/home/messages'){ // 这里要是有十几二十个的话,就会显得累赘
113 if (to.meta.isAuth){
114 if (localStorage.getItem('school')==='BaiYeShu'){
115 next();// 放行
116 console.log('@');
117 }else{
118 alert('学校名不对!')
119 }
120 }else{
121 next();
122 }
123 }
124 }
125 # 4.组件内部路由守卫(写在组件内部的回调)
126 // 通过路由规则,进入该组件时被调用
127 beforeRouteEnter(to, from, next) {
128 console.log('beforeRouteEnter');
129 next();// 放行
130 },
131 // 通过路由规则,离开组件时被调用
132 afterRouterLeave(to, from, next) {
133 console.log('afterRouterLeave');
134 next();// 放行
135 }
136
Vue 路由的一些复杂配置的更多相关文章
- vue 路由(二级)配置及详细步骤
1.安装插件(可以选择在初始化项目的时候安装) cnpm install vue-router --save-dev 2.将插件全局引入到项目中(main.js) import VueRouter f ...
- vue路由history模式,nginx配置
nginx配置内容 # For more information on configuration, see: # * Official English Documentation: http://n ...
- Vue 路由配置、动态路由
1.安装 npm install vue-router --save / cnpm install vue-router --save 2.引入并 Vue.use(VueRouter) (main.j ...
- vue路由配置
1.安装 npm install vue-router --save / cnpm install vue-router --save 2.引入并 Vue.use(VueRouter) (main.j ...
- Vue 路由模块化配置
博客地址:https://ainyi.com/77 企业运营后台页面很多,路由如若不区分模块化配置,所有路由挤在同一个文件将不好维护,所以路由的配置也要模块化 分享两个解决方案 -- Vue 路由配置 ...
- vue路由的两种模式配置以及history模式下面后端如何配置
vue路由的两种模式配置以及history模式下面后端如何配置 1.hash ——即地址栏URL中的#符号.hash 虽然出现URL中,但不会被包含在HTTP请求中,对后端完全没有影响,因此改变has ...
- 简单配置Vue路由
简单配置Vue路由 1. 创建一个单文件组件Test.vue <template> <div>Test</div> </template> <s ...
- Vue之创建组件之配置路由!
Vue之创建组件之配置路由!== 第一步: 当然就是在我们的试图文件夹[views]新建一个文件夹比如home 在home文件夹下面新建一个文件index.vue 第二步:在router目录下做如下事 ...
- npm vue路由配置
npm vue路由 复习:1.README.md文件:保存如何使用的命令 (1) npm install:拷项目时可以不拷node_modules文件,运行该命令时,会自动下载node_mod ...
随机推荐
- redis 基础1
1.redis是什么? redis是非关系型数据库key-value数据库,开源免费.是当下NoSQL技术之一 2.redis能干吗? (1)内存存储,可以持久化,redis存储在内存中,内存的话是断 ...
- 关于我学git这档子事(4)
------------恢复内容开始------------ 当本地分支(main/dev)比远程仓库分支(main/dev)落后几次提交时 先: git pull 更新本地仓库 再 git push ...
- django框架4
内容概要 编辑删除功能编写 虚拟环境 django路由层版本区别 视图函数的返回值 JsonResponse对象 form表单上传文件 request其他方法 FBV与CBV(基于函数的视图.基于类的 ...
- NPM Error:gyp: No Xcode or CLT version detected!
问题 最近在macOS Catalina中使用npm安装模块,经常会出现如下错误: > node-gyp rebuild No receipt for 'com.apple.pkg.CLTool ...
- plt.figure()的使用,plt.plot(),plt.subplot(),plt.subplots()和图中图
参考:https://blog.csdn.net/m0_37362454/article/details/81511427 matplotlib官方文档:https://matplotlib.org/ ...
- Nginx安装及支持https代理配置和禁用TSLv1.0、TSLv1.1配置
Linux安装Nginx Nginx安装及支持https代理配置和禁用TSLv1.0.TSLv1.1配置. 下载安装包 [root@localhost ~]# wget http://nginx.or ...
- Xilinx DMA的几种方式与架构
DMA是direct memory access,在FPGA系统中,常用的几种DMA需求: 1. 在PL内部无PS(CPU这里统一称为PS)持续干预搬移数据,常见的接口形态为AXIS与AXI,AXI与 ...
- SQLite数据库损坏及其修复探究
数据库如何发生损坏 SQLite 数据库具有很强的抗损坏能力.在执行事务时如果发生应用程序崩溃.操作系统崩溃甚至电源故障,那么在下次访问数据库文件时,会自动回滚部分写入的事务.恢复过程是全自动的, ...
- distroless 镜像介绍及 基于cbl-mariner的.NET distroless 镜像的容器
1.概述 容器改变了我们看待技术基础设施的方式.这是我们运行应用程序方式的一次巨大飞跃.容器编排和云服务一起为我们提供了一种近乎无限规模的无缝扩展能力. 根据定义,容器应该包含 应用程序 及其 运行时 ...
- javascript写无缝平移的轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...