深入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 相关文章推荐
js中判断控件是否存在
Aug 25 Javascript
使用jQuery操作Cookies的实现代码
Oct 09 Javascript
JS读取XML文件示例代码
Nov 15 Javascript
jQuery基于当前元素进行下一步的遍历
May 20 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
Apr 14 Javascript
举例讲解JavaScript中关于对象操作的相关知识
Nov 16 Javascript
js正则表达式注册页面表单验证
Oct 11 Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 Javascript
JS沙箱模式实例分析
Sep 04 Javascript
Node.js 实现远程桌面监控的方法步骤
Jul 02 Javascript
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
Apr 03 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 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
Javascript删除数组里的某个元素
2019/02/28 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
js页面加载后执行的几种方式小结
2020/01/30 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
Python的多态性实例分析
2015/07/07 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
Python用户自定义异常的实现
2020/12/25 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
培训楼经理岗位责任制
2014/02/10 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
车间核算员岗位职责
2014/07/01 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
2015年度党风廉政建设工作情况汇报
2015/01/02 职场文书
《灰雀》教学反思
2016/02/19 职场文书
redis 查看所有的key方式
2021/05/07 Redis
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python