深入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实现table鼠标经过变色代码
Sep 25 Javascript
JavaScript中的6种运算符总结
Oct 16 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
Jul 02 Javascript
jQuery实现布局高宽自适应的简单实例
May 28 Javascript
AngularJS 过滤器的简单实例
Jul 27 Javascript
基本DOM节点操作
Jan 17 Javascript
简单的vue-resourse获取json并应用到模板示例
Feb 10 Javascript
JS实现移动端按首字母检索城市列表附源码下载
Jul 05 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
Dec 07 Javascript
mpvue将vue项目转换为小程序
Sep 30 Javascript
Vue基础配置讲解
Nov 29 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
Oct 31 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数组的维度
2013/06/10 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
经典商业广告词
2014/03/13 职场文书
父母寄语大全
2014/04/12 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
暂住证明怎么写
2015/06/19 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis