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 ...
随机推荐
- grpc-java源码环境编译
1. Clone 1.1 git clone https://github.com/grpc/grpc-java.git 1.2 idea 打开grpc-java工程 2.compile 2.1 ja ...
- Cubieboard安装系统
2013年买的一个小玩意. 一.硬件 1.1 相关资料 http://www.cubieforums.com http://cubie.cc 1.2 cubieboard1 1.3 无线网卡 水星 M ...
- 用python实现自动化登录禅道系统 设置定时器自动执行脚本
由于各种原因,我想试下用python实现自动登录禅道系统,并且每天定时执行.(本人第一次接触自动化,在大佬眼中门槛都没摸到的类型) 首先缕清思路: 1.实现自动登录禅道系统,用selenium实现2. ...
- css属性补充与JS数据类型
目录 溢出属性(overflow) 定位(position) z-index属性 opacity不透明度 JavaScript简介 变量与注释 数据类型 数值(Number) 字符串(String) ...
- MUI+html5+javascript 点击事件触发页面间传值
关于如何进行页面转跳,请看 https://www.cnblogs.com/JUNELITTLEPANDA/p/15956176.html,以下跳转方法是采用的其中一种 1- 仅适用于移动端,pc端 ...
- 场景实践:基于 IntelliJ IDEA 插件部署微服务应用
体验简介 阿里云云起实验室提供相关实验资源,点击前往 本场景指导您把微服务应用部署到 SAE 平台: 登陆 SAE 控制台,基于 jar 包创建应用 基于 IntelliJ IDEA 插件更新 SAE ...
- [gym102978C] Count Min Ratio
[gym102978C] Count Min Ratio 给定 \(B\) 个蓝色的球. \(R\) 个红色的球以及一个绿色的球,同颜色的球不可区分.对于一种球的排列方式,记 \(l_B,r_B,l_ ...
- 解惑unittest框架中导入HTMLTestRunner模块后正常运行却无法生成HTML报告问题
1.HTMLTestRunner介绍 HTMLTestRunner是一个第三方的unittest HTML报告库,用于python单元测试框架的TestRunner.它是生成一个HTML报告,以一目了 ...
- model.apply(fn)或net.apply(fn)
详情可参考:https://pytorch.org/docs/1.11/generated/torch.nn.Module.html?highlight=torch%20nn%20module%20a ...
- 第6章 字符串(上)——C风格字符串
6.1 C-strings(C 风格字符串) C风格字符串: 字符数组是元素为字符型的数组,字符串是以空字符'\0' 作为数组最后一个元素的字符数组. 如果指定了数组的大小,而字符串的长度又小于数组大 ...