深入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 相关文章推荐
IE JS编程需注意的内存释放问题
Jun 23 Javascript
突发奇想的一个jquery插件
Nov 19 Javascript
关于div自适应高度/左右高度自适应一致的js代码
Mar 22 Javascript
jquery 删除cookie失效的解决方法
Nov 12 Javascript
JavaScript实现在标题栏上显示当前日期的方法
Mar 19 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
Jul 07 Javascript
AngularJS中filter的使用实例详解
Aug 25 Javascript
在vscode中统一vue编码风格的方法
Feb 22 Javascript
JS实现将链接生成二维码并转为图片的方法
Mar 17 Javascript
Node.js学习之内置模块fs用法示例
Jan 22 Javascript
微信小程序实现弹幕墙(祝福墙)
Nov 18 Javascript
详细介绍Next.js脚手架完整搭建封装
Apr 26 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对mongodb的扩展(初出茅庐)
2012/11/11 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
微信小程序实现随机验证码功能
2018/12/20 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
python获取本地计算机名字的方法
2015/04/29 Python
python使用mysql数据库示例代码
2017/05/21 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
Python requests上传文件实现步骤
2020/09/15 Python
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
贷款委托书怎么写
2014/08/02 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
运动会运动员赞词
2015/07/22 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS
教你部署vue项目到docker
2022/04/05 Vue.js