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 路由的一些复杂配置的更多相关文章

  1. vue 路由(二级)配置及详细步骤

    1.安装插件(可以选择在初始化项目的时候安装) cnpm install vue-router --save-dev 2.将插件全局引入到项目中(main.js) import VueRouter f ...

  2. vue路由history模式,nginx配置

    nginx配置内容 # For more information on configuration, see: # * Official English Documentation: http://n ...

  3. Vue 路由配置、动态路由

    1.安装 npm install vue-router --save / cnpm install vue-router --save 2.引入并 Vue.use(VueRouter) (main.j ...

  4. vue路由配置

    1.安装 npm install vue-router --save / cnpm install vue-router --save 2.引入并 Vue.use(VueRouter) (main.j ...

  5. Vue 路由模块化配置

    博客地址:https://ainyi.com/77 企业运营后台页面很多,路由如若不区分模块化配置,所有路由挤在同一个文件将不好维护,所以路由的配置也要模块化 分享两个解决方案 -- Vue 路由配置 ...

  6. vue路由的两种模式配置以及history模式下面后端如何配置

    vue路由的两种模式配置以及history模式下面后端如何配置 1.hash ——即地址栏URL中的#符号.hash 虽然出现URL中,但不会被包含在HTTP请求中,对后端完全没有影响,因此改变has ...

  7. 简单配置Vue路由

    简单配置Vue路由 1.  创建一个单文件组件Test.vue <template> <div>Test</div> </template> <s ...

  8. Vue之创建组件之配置路由!

    Vue之创建组件之配置路由!== 第一步: 当然就是在我们的试图文件夹[views]新建一个文件夹比如home 在home文件夹下面新建一个文件index.vue 第二步:在router目录下做如下事 ...

  9. npm vue路由配置

    npm vue路由 复习:1.README.md文件:保存如何使用的命令 (1)     npm install:拷项目时可以不拷node_modules文件,运行该命令时,会自动下载node_mod ...

随机推荐

  1. Dart 2.17 正式发布

    文/ Michael Thomsen, Google Dart 团队产品经理,2022 年 5 月 12 日发表于 Dart 官方博客 随着 Flutter 3 在本次 I/O 大会的发布,我们也同时 ...

  2. 好客租房24-react中的事件处理(事件绑定)

    3.1事件绑定 React事件绑定语法和DOM事件语法相似 语法:on+事件名称={事件处理程序} 比如οnclick={()=>{}} //导入react     import React f ...

  3. Android Studio中一套代码多版本打包

    一套代码达到以下效果: 打包不同applicationId能同时安装在同一手机上 不同logo,app名称, 不同第三方SDK接入配置(例如微信分享appid,激光推送appkey) 能区分debug ...

  4. 选择器补充与CSS属性

    目录 伪元素选择器 选择器优先级 CSS属性 宽和高 字体样式 文字属性 背景属性 边框属性 display属性 盒子模型 浮动(float) 清除浮动 伪元素选择器 伪元素选择器可以通过CSS操作文 ...

  5. VB.net使用Microsoft.Office.Interop.Excel对Excel进行简单的读取和写入

    环境:Visual Stadio 2017  .NET Framework 4.6.1 1.直接进入正题,新建一个控制台程序,右键引用-管理Nuget程序包,搜索Microsoft.Office.In ...

  6. Druid数据库连接池使用体验

    写在前面 在实际工作中我们我们使用较多的则是Spring默认的HikariDataSource数据库连接池,但是它无法提供可视化监控SQL这一能力,而这在很多场景下往往又是我们需要的功能,因此今天来学 ...

  7. np.r_、np.c_、np.concatenate和np.append

    np.r_是按行连接两个矩阵,就是把两矩阵上下相加,要求列数相等,最终结果的行数为两个矩阵行数和. np.c_是按列连接两个矩阵,就是把两矩阵左右相加,要求行数相等,最终结果的列数等于两矩阵的列数和. ...

  8. 【转载】浅谈大规模k8s集群关于events的那些坑

    原文链接:一流铲屎官二流程序员[浅谈大规模k8s集群关于events的那些坑] 背景 随着k8s集群规模的增加,集群内的object数量也与日俱增,那么events的数量也会伴随其大量增加,那么当用户 ...

  9. 透过Redis源码探究字符串的实现

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的Redis 5.0源码 概述 最近在通过 Redis 学 C 语言,不得不说, ...

  10. C++ 炼气期之数组探幽

    1. 数组概念 变量是内存中的一个存储块,大小由声明时的数据类型决定. 数组可以认为是变量的集合,在内存中表现为一片连续的存储区域,其特点为: 同类型多个变量的集合. 每一个变量没有自己的名字. 数组 ...