深入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 相关文章推荐
javascript中注册和移除事件的4种方式
Mar 20 Javascript
在JavaScript中调用Java类和接口的方法
Sep 07 Javascript
网页挂马方式整理及详细介绍
Nov 03 Javascript
详解Vue 实例中的生命周期钩子
Mar 21 Javascript
Bootstrap 响应式实用工具实例详解
Mar 29 Javascript
JavaScript禁止微信浏览器下拉回弹效果
May 16 Javascript
AngularJS自定义指令实现面包屑功能完整实例
May 17 Javascript
JavaScript根据json生成html表格的示例代码
Oct 24 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
Jul 05 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
Nov 05 Javascript
js实现淘宝浏览商品放大镜功能
Oct 28 Javascript
ES5和ES6中类的区别总结
Dec 21 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
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
5 cool javascript apps
2007/03/24 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
2017/10/30 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
2019/10/12 Javascript
python利用datetime模块计算时间差
2015/08/04 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
python实现K最近邻算法
2018/01/29 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
研究生自荐信
2013/10/09 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
生活部的活动方案
2014/08/19 职场文书
出售房屋委托书范本
2014/09/24 职场文书
个人查摆剖析材料
2014/10/04 职场文书
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL
PO模式在selenium自动化测试框架的优势
2022/03/20 Python