vue-router:嵌套路由的使用方法


Posted in Javascript onFebruary 21, 2017

模板抽离

我们已经学习过了Vue模板的另外定义形式,使用<template></template>。

<!-- 模板抽离出来 -->
  <template id="home">
    <div>首页</div>
  </template>

  <template id="news">
    <div>新闻</div>
  </template>

然后js里定义路由组件的时候:

// 1. 定义(路由)组件。
    const Home = { template: '#home' };
    const News = { template: '#news' };

路由嵌套

实际应用界面,通常由多层嵌套的组件组合而成。

比如,我们 “首页”组件中,还嵌套着 “登录”和 “注册”组件,那么URL对应就是/home/login和/home/reg。

<template id="home">
    <!-- 注意:组件只能有一个根元素,所以我们包装到这个div中 -->
    <div>
      <h2>首页</h2>
       <router-link to="/home/login">登录</router-link>
      <router-link to="/home/reg">注册</router-link>
      <!-- 路由匹配到的组件将渲染在这里 -->
      <router-view></router-view>
    </div>
  </template>

这是访问/home后的模板,其中我们需要把/home/login和/home/reg渲染进来。

完成上面代码后,HTML结构如下图:

vue-router:嵌套路由的使用方法

登录和注册2个组件

<template id="login">
    <div>登录界面</div>
  </template>
  <template id="reg">
    <div>注册界面</div>
  </template>
//定义路由组件
const Login = { template: '#login' };
    const Reg = { template: '#reg' };

3.定义路由

// 2. 定义路由
    const routes = [
       { path: '/', redirect: '/home' },
      { 
        path: '/home', 
        component: Home, 
        children:[
          { path: '/home/login', component: Login},
          { path: '/home/reg', component: Reg}
        ]
      },
      { path: '/news', component: News}
    ]

注意我们在home路由配置了它的children。这就是嵌套路由。

4.案例全部代码如下:

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <meta charset="utf-8">
  <script src="http://unpkg.com/vue/dist/vue.js"></script>
  <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
</head>
<body> 
  <div id="box">
    <p>
      <router-link to="/home">home</router-link>
      <router-link to="/news">news</router-link>
    </p>
     <router-view></router-view>
  </div>

  <!-- 模板抽离出来 -->
  <template id="home">
    <!-- 注意:组件只能有一个根元素,所以我们包装到这个div中 -->
    <div>
      <h2>首页</h2>
       <router-link to="/home/login">登录</router-link>
      <router-link to="/home/reg">注册</router-link>
      <!-- 路由匹配到的组件将渲染在这里 -->
      <router-view></router-view>
    </div>
  </template>

  <template id="news">
    <div>新闻</div>
  </template>

  <template id="login">
    <div>登录界面</div>
  </template>
  <template id="reg">
    <div>注册界面</div>
  </template>

  <script type="text/javascript">
    // 1. 定义(路由)组件。
    const Home = { template: '#home' };
    const News = { template: '#news' };

    const Login = { template: '#login' };
    const Reg = { template: '#reg' };

    // 2. 定义路由
    const routes = [
       { path: '/', redirect: '/home' },
      { 
        path: '/home', 
        component: Home, 
        children:[
          { path: '/home/login', component: Login},
          { path: '/home/reg', component: Reg}
        ]
      },
      { path: '/news', component: News}
    ]

    // 3. 创建 router 实例,然后传 `routes` 配置
    const router = new VueRouter({
      routes // (缩写)相当于 routes: routes
    })


    // 4. 创建和挂载根实例。
    // 记得要通过 router 配置参数注入路由,
    // 从而让整个应用都有路由功能
    const app = new Vue({
     router
    }).$mount('#box')

    // 现在,应用已经启动了!
  </script>
</body>
</html>

vue-router:嵌套路由的使用方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
父窗口获取弹出子窗口文本框的值
Jun 27 Javascript
不同的jQuery API来处理不同的浏览器事件
Dec 09 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
Mar 21 Javascript
javascript实现微信分享
Dec 23 Javascript
AngularJS中的过滤器使用详解
Jun 16 Javascript
H5移动端适配 Flexible方案
Oct 24 Javascript
JavaScript日期对象(Date)基本用法示例
Jan 18 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
Apr 27 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
Oct 30 Javascript
浅探express路由和中间件的实现
Sep 30 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
Apr 03 Javascript
vue 组件间的通信之子组件向父组件传值的方式
Jul 29 Javascript
JavaScript中创建对象的7种模式详解
Feb 21 #Javascript
vue-router路由简单案例介绍
Feb 21 #Javascript
微信小程序 基础组件与导航组件详细介绍
Feb 21 #Javascript
微信小程序 UI与容器组件总结
Feb 21 #Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
Feb 21 #Javascript
layer弹出层中H5播放器全屏出错的解决方法
Feb 21 #Javascript
微信小程序 支付功能开发错误总结
Feb 21 #Javascript
You might like
再次研究下cache_lite
2007/02/14 PHP
php中final关键字用法分析
2016/12/07 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
php实现的顺序线性表示例
2019/05/04 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
美容院店长岗位职责
2014/04/08 职场文书
股东合作协议书
2014/04/14 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
4s店活动策划方案
2014/08/25 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
齐云山导游词
2015/02/06 职场文书
党校学习个人总结
2015/02/15 职场文书
千与千寻观后感
2015/06/04 职场文书
保护动物的宣传语
2015/07/13 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书