深入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条件判断使用小技巧总结
Sep 08 Javascript
浅谈javascript 面向对象编程
Oct 28 Javascript
原生js和jQuery随意改变div属性style的名称和值
Oct 22 Javascript
js判断某个方法是否存在实例代码
Jan 10 Javascript
jquery实现页面关键词高亮显示的方法
Mar 12 Javascript
实现easyui的datagrid导出为excel的示例代码
Nov 10 Javascript
vue几个常用跨域处理方式介绍
Feb 07 Javascript
微信小程序中this.data与this.setData的区别详解
Sep 17 Javascript
vue.js购物车添加商品组件的方法
Sep 17 Javascript
ElementUI中el-tree节点的操作的实现
Feb 27 Javascript
vue监听滚动事件的方法
Dec 21 Vue.js
vue 把二维或多维数组转一维数组
Apr 24 Vue.js
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
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
js实现二级导航功能
2017/03/03 Javascript
node.js基础知识小结
2018/02/26 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
vue实现拖拽效果
2019/12/23 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
python黑魔法之编码转换
2016/01/25 Python
python实现感知器算法(批处理)
2019/01/18 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
法国房车租赁网站:Yescapa
2019/08/26 全球购物
Java里面如何创建一个内部类的实例
2015/01/19 面试题
董事长岗位职责
2013/11/30 职场文书
英语国培研修感言
2014/02/13 职场文书
中职招生先进个人材料
2014/08/31 职场文书
社区好人好事材料
2014/12/26 职场文书
教师年度考核个人总结
2015/02/12 职场文书
怎样写观后感
2015/06/19 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript
python3实现无权最短路径的方法
2021/05/12 Python
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android