深入Vue-Router路由嵌套理解


Posted in Javascript onAugust 13, 2018

背景

最近有个初学Vue的朋友问我,为什么我的两层路由跳不起来了,直接输url也不行?信息不是很充足及看不到源码的我,当时是那个一脸懵逼啊,心想这肯定是代码的问题,跟层级无关。接着我继续追问...(省略)...大致明白了情况,原来这位朋友没有理解Vue-Router嵌套的原理,下面整理了一下我对Vue-Router路由嵌套的理解

Vue-Router嵌套路由

首先假设项目中有两个路由Profile和Posts,按写法把他们定义为一层路由,是Root的子路由,因此Root中要有router-view组件去承载子路由,才能实现子路由切换展示

一层路由

Root容器

<div>
  <h1>Root</h1>
  <!-- 承载子路由的容器 -->
  <router-view />
 </div>

一层路由写法

[
 {
  path: '/profile'
  component: profile // 组件引用 此处省略引用
 },
 {
  path: '/posts'
  component: posts // 组件引用 此处省略引用
 },
]

一层路由展示

Root的子路由展示是在Root中的,切换路由其实只是切换了router-view容器的内容

/profile               /posts
+------------------+         +-----------------+
| Root       |         | Root      |
| +--------------+ |         | +-------------+ |
| | Profile   | | +------------> | | Posts    | |
| |       | |         | |       | |
| +--------------+ |         | +-------------+ |
+------------------+         +-----------------+

二层路由

在上面的基础上,对profile加一层路由

profile容器

<div>
  <h1>profile</h1>
  <!-- 承载profile子路由的容器 -->
  <router-view />
 </div>

profile子路由

[
 {
  path: '/profile'
  component: profile, // 此处不能少
  children: [
   {
    path: '/profile/list',
    component: profileList
   },
   {
    path: '/profile/item',
    component: profileItem
   }
  ]
 },
 ...
]

二层路由展示

和一层路由相同的是,Profile的子路由是在Profile容器中切换展示的,所以Profile路由的component是必不可少的

/profile/list             /profile/item
+------------------+         +-----------------+
| Root       |         | Root      |
| +--------------+ |         | +-------------+ |
| | Profile   | | +------------> | | Profile   | |
| | +----------+ | |         | | +---------+ | |
| | | list   | | |         | | | item  | | |
| | |     | | |         | | |     | | |
| | +----------+ | |         | | +---------+ | |
| +--------------+ |         | +-------------+ |
+------------------+         +-----------------+

路由嵌套总结

任何子路由都是在其父路由的组件中切换显示,不管是多少层的路由嵌套,都是这样的理解,所以父路由需要有以下两点,二者缺一不可

  • 有组件引用
  • 组件中有router-view组件

而我那个朋友就是父路由没有引用组件,导致子路由没有承载容器,自然而然就出现了他说的不起效的情况,这里把经验分享给大家,希望能对初学者有帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
对之前写的jquery分页做下升级
Jun 19 Javascript
JavaScript和CSS交互的方法汇总
Dec 02 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
Oct 12 Javascript
详谈javascript异步编程
Feb 21 Javascript
全面解析Javascript无限添加QQ好友原理
Jun 15 Javascript
移动开发之自适应手机屏幕宽度
Nov 23 Javascript
layer弹出层框架alert与msg详解
Mar 14 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 Javascript
Javascript中将变量转换为字符串的三种方法
Sep 19 Javascript
JS中DOM元素的attribute与property属性示例详解
Sep 04 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
Jun 14 Javascript
vue移动端使用canvas签名的实现
Jan 15 Javascript
AngularJS与后端php的数据交互方法
Aug 13 #Javascript
Vue Promise的axios请求封装详解
Aug 13 #Javascript
Angular6封装http请求的步骤详解
Aug 13 #Javascript
解决angularjs中同步执行http请求的方法
Aug 13 #Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
Aug 13 #Javascript
AngularJS使用$http配置对象方式与服务端交互方法
Aug 13 #Javascript
angularjs $http调用接口的方式详解
Aug 13 #Javascript
You might like
如何正确理解PHP的错误信息
2006/10/09 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
javascript优先加载笔记代码
2008/09/30 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
详解vue-router 路由元信息
2017/09/13 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
网站开发实习生的自我评价
2013/12/11 职场文书
医院辞职信范文
2014/01/17 职场文书
小学教师师德感言
2014/02/10 职场文书
跳槽求职信范文
2014/05/26 职场文书
车辆委托书范本
2014/10/05 职场文书
民事代理词范文
2015/05/25 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android