深入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对数组的操作技巧整理
Mar 25 Javascript
node.js中的fs.exists方法使用说明
Dec 17 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
Sep 07 Javascript
原生js和jQuery实现淡入淡出轮播效果
Dec 25 Javascript
javascript特殊日历控件分享
Mar 07 Javascript
利用n工具轻松管理Node.js的版本
Apr 21 Javascript
如何解决vue2.0下IE浏览器白屏问题
Sep 13 Javascript
vue打包相关细节整理(小结)
Sep 28 Javascript
vue 父组件中调用子组件函数的方法
Jun 06 Javascript
微信小程序实现打卡签到页面
Sep 21 Javascript
vue 防止页面加载时看到花括号的解决操作
Nov 09 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 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
信用卡效验程序
2006/10/09 PHP
dedecms模版制作使用方法
2007/04/03 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
本地对象Array的原型扩展实现代码
2010/12/04 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
python程序输出无内容的解决方式
2020/04/09 Python
Python如何根据时间序列数据作图
2020/05/12 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
Python代码需要缩进吗
2020/07/01 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
美丽的现代设计家具:2Modern
2018/07/26 全球购物
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
管理专员自荐信
2014/01/26 职场文书
硕士生找工作求职信
2014/07/05 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书