深入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的公告无限循环滚动实现代码
May 11 Javascript
JS清除IE浏览器缓存的方法
Jul 26 Javascript
jQuery中children()方法用法实例
Jan 07 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
May 12 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
Oct 10 Javascript
使用BootStrap实现悬浮窗口的效果
Dec 13 Javascript
js canvas实现擦除效果示例代码
Apr 26 Javascript
Javascript继承机制详解
May 30 Javascript
Node.js pipe实现源码解析
Aug 12 Javascript
vuex 动态注册方法 registerModule的实现
Jul 03 Javascript
浅谈node.js中间件有哪些类型
Apr 29 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
php 8小时时间差的解决方法小结
2009/12/22 PHP
php模板原理讲解
2013/11/13 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
JS实现简单的Canvas画图实例
2013/07/04 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
js注册时输入合法性验证方法
2017/10/21 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
python 解析html之BeautifulSoup
2009/07/07 Python
python自定义异常实例详解
2017/07/11 Python
快速了解Python相对导入
2018/01/12 Python
浅谈Django的缓存机制
2018/08/23 Python
python求质数的3种方法
2018/09/28 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
安全生产宣传标语
2014/06/06 职场文书
献爱心标语
2014/06/21 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
2015年公务员工作总结
2015/04/24 职场文书
考勤制度通知
2015/04/25 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技