路由的嵌套就是点击一个路由地址后,继续点击,进入到另外一个路由地址下,即第二个路由就是第一个路由的子路由。
根据我们前面学习的VueRouter的知识,可以直接写出代码来实现:

一般写法

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./lib/vue-2.4.0.js"></script><script src="https://unpkg.com/vue-router/dist/vue-router.js"></script></head><body><div id="app"><router-link to="/account">account</router-link><router-view></router-view></div><template id="temp"><div><h1>Account组件</h1><router-link to="/account/login">登录</router-link></div></template><script>var account = {template:'#temp',}var router = new VueRouter({routes:[{path:'/account',component:account},]})new Vue({el:'#app',data:{},methods: {},router})</script>
</body>
</html>

点击account—路由跳转到/account下:


再点击登录,跳转至/account/login

改进写法

我们发现login路由是account路由下的一个子路由,形成了一个父子组件路由。VueRouter提供给我们一个属性== children ==来是实现路由的嵌套:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./lib/vue-2.4.0.js"></script><script src="https://unpkg.com/vue-router/dist/vue-router.js"></script></head><body><div id="app"><router-link to="/account">account</router-link><router-view></router-view></div><template id="temp"><div><h1>这是Account组件</h1><router-link to="/account/login">登录</router-link><router-link to="/account/register">注册</router-link><router-view></router-view></div></template><script>var account={template:'#temp'}var login={template:'<h1>登录的组件显示</h1>'}var register={template:'<h1>注册的组件显示</h1>'}var router=new VueRouter({routes: [{path:'/account',component:account,children:[{path:'login',component:login},{path:'register',component:register}]},]})var vm=new Vue({el:'#app',data:{},methods: {},router})
</script>
</body>
</html>

点击account,跳转到子路由login中:


再分别点击子路由,进入到子路由下:

注意

使用children属性实现子路由时,子路由path前面 不能带/,以/ 开头的嵌套路径会被当作根路径否则会永远以根路由开始请求, 这样不方便我们调用渲染数据

应用— 实现一个经典布局

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="lib/vue-2.4.0.js"></script><script src="lib/vue-router-3.0.1.js"></script><style>html,body{margin: 0;padding: 0;}.header{background-color: orange;height:80px;}h1{margin: 0;padding: 0;font-size: 16px;}.container{display: flex;height: 600px;}.left{background-color: lightgreen;flex: 2;}.main{flex: 8;background-color: lightpink;}</style>
</head>
<body><div id="app"><router-view></router-view><div class="container"><router-view name="left"></router-view><router-view name="main"></router-view></div></div><script>var header={template:'<h1 class="header">Header头部区域</h1>'}var leftBox={template:'<h1 class="left">Left侧边栏区域</h1>'}var mainBox={template:'<h1 class="main">mainBox主体内容</h1>'}var router=new VueRouter({routes: [{path:'/',components:{'default':header,'left':leftBox,'main':mainBox}}]})var vm=new Vue({el:'#app',data:{},methods: {},router})</script>
</body>
</html>

Vue中路由嵌套(子路由)相关推荐

  1. Vue中路由管理器Vue Router使用介绍(三)

    2019独角兽企业重金招聘Python工程师标准>>> 一.路由定义添加动态参数定义 1.路由定义项,使用:xx 方式 定义动态参数 {path:'/user/:id/:name', ...

  2. vue中路由的实现原理?

    vue中路由的实现原理? 1.首先需要了解一下Vue路由分为两种,一种是哈希路由,其最明显的特征是URL地址带'#'号的,其实对地址栏也就不怎么美观一点.其次是history路由也就是URL不带'#' ...

  3. Vue Router路由嵌套

    路由嵌套分析 点击父级路由链接显示模板内容 模板内容中又有子级路由链接 点击子级路由链接显示子级模板内容 默认显示 点击 hello链接显示 本身的组件外,还显示了自身下的子组件 嵌套路由用法 父路由 ...

  4. 关于Vue中路由配置和router-link的一点补充

    前置知识: 1.Vue组件.单页面组件 2.目录结构关联性知识 简介: 将组件和路径映射起来.主要用于单页面组件应用,即:创建了多个单页面组件,可通过vue router来进行类似页面的跳转.因为单页 ...

  5. vue中路由跳转怎样刷新页面保证页面更新

    vue中我们实现从一个页面点击某一项跳转到另外一个页面事使用在点击事件中定义 <card @click.native="viewMoreRelation(item)" :ar ...

  6. vue中路由按需加载的几种方式

    使用vue-cli构建项目后,我们会在Router文件夹下面的index.js里面引入相关的路由组件,如: import Hello from '@/components/Hello' import ...

  7. vue中路由传参方式之二(this.$router.push进行编程式路由跳转传参)

    this.$router.push进行编程式路由跳转传参 router中路由配置 组件home点击传参 组件homeDetails接受参数 router中路由配置 params第一种传参路由配置 {p ...

  8. vue中路由实现的原理?

    一.概念 通过改变 URL,在不重新请求页面的情况下,更新页面视图. 二.实现方式 更新视图但不重新请求页面,是前端路由原理的核心之一,目前在浏览器环境中这一功能的实现主要有2种方式: 1.Hash ...

  9. 解决 Vue 中路由跳转相同路径页面不刷新的问题

    vue 中同一路由跳转由于不会重新执行生命周期,所以数据不更新.不管是动态路由,还是传参都不会刷新页面 最简单最常用的方式是监听路由变化,在路由发生变化后执行一系列操作 watch: {$route( ...

最新文章

  1. python发声-python3-声音处理
  2. 一维循环数组最大子数组求解
  3. Python学习笔记:接下来
  4. Android学习笔记2---多界面切换
  5. webstorm 不知道手贱点了什么,有时候会自动删除分号
  6. 纽约部署免费千兆Wi-Fi 30秒可下一部电影
  7. python对称加密_【Python】 基于秘钥的对称加密
  8. 手机连接Wi-Fi不能上网之DNS异常
  9. constant api app
  10. 计算机窗口闪屏,闪屏
  11. 量子计算机为什么低温,突破量子计算机瓶颈!超低温芯片能在接近绝对零度的温度下工作...
  12. phpstorm License Server激活 官网下载版本直接激活
  13. mysql 中auto_mysql中的auto_increment
  14. HTML5期末大作业:婚庆网站设计——红色的婚庆(18页) HTML5网页设计成品_学生DW静态网页设计代做_web课程设计网页制作
  15. CentOS7 mysql8.0 国内镜像源安装
  16. java毕业设计的健身俱乐部综合管理系统mybatis+源码+调试部署+系统+数据库+lw
  17. Qt为exe添加ico图片
  18. 去掉matlab图像显示刻度
  19. 完全背包问题(f m)
  20. SQLServer ODBC 驱动的区别

热门文章

  1. py2neo—Neo4jpython的配合使用
  2. 大企业邮箱品牌排行中,哪个企业邮箱好用?
  3. mx播放器有没有投屏功能_芝杜DLNA投屏功能
  4. 2023最新修复版Mxone模板+精美苹果V10影视模板主题
  5. python 输入一个整数 输出百位及以上_Python二级编程:获取用户输入的一个整数,输出该整数百位及以上的数字...
  6. c语言中 float delta,比较float和double值与delta吗?
  7. thinkphp6-----微信授权登录
  8. HDU-2224-The shortest path
  9. 加载图片出错时,加载其他图片
  10. 金融行业管理解决方案