深入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 setTimeout 常见问题小结
Aug 13 Javascript
JQuery实现鼠标滑过显示导航下拉列表
Sep 12 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
May 05 Javascript
用户代理字符串userAgent可实现的四个识别
Sep 20 Javascript
JS传值出现中文参数乱码的解决方法
Jun 30 Javascript
bootstrap table插件的分页与checkbox使用详解
Jul 23 Javascript
Bootstrap图片轮播效果详解
Oct 17 Javascript
使用 Node.js 开发资讯爬虫流程
Jan 07 Javascript
JS实现将链接生成二维码并转为图片的方法
Mar 17 Javascript
浅谈JS中this在各个场景下的指向
Aug 14 Javascript
JQuery 实现文件下载的常用方法分析
Oct 29 jQuery
JavaScript修改注册表实例代码
Jan 05 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 fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
vue 中的keep-alive实例代码
2018/07/20 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
python语言使用技巧分享
2016/05/31 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
Python Django路径配置实现过程解析
2020/11/05 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
印刷工程专业应届生求职信
2013/09/29 职场文书
中式婚礼主持词
2014/03/13 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
假面舞会策划方案
2014/05/29 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
导游词之日本富士山
2020/01/06 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
python如何读取和存储dict()与.json格式文件
2022/06/25 Python