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 相关文章推荐
复制js对象方法(详解)
Jul 08 Javascript
jQuery内部原理和实现方式浅析
Feb 03 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
Dec 13 Javascript
input file上传 图片预览功能实例代码
Oct 25 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
Sep 18 Javascript
angularjs 页面自适应高度的方法
Jan 17 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
Jul 28 Javascript
原生JS实现$.param() 函数的方法
Aug 10 Javascript
微信小程序开发技巧汇总
Jul 15 Javascript
node-red File读取好保存实例讲解
Sep 11 Javascript
JavaScript组合设计模式--改进引入案例分析
May 23 Javascript
Vue如何实现验证码输入交互
Dec 07 Vue.js
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
上传多个文件的PHP脚本
2006/11/26 PHP
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
浅谈discuz密码加密的方式
2014/05/22 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
XmlUtils JS操作XML工具类
2009/10/01 Javascript
Javascript的匿名函数小结
2009/12/31 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
简单介绍Python中的len()函数的使用
2015/04/07 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
基于python实现查询ip地址来源
2020/06/02 Python
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
信息技术培训感言
2014/03/06 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
企业文明单位申报材料
2014/05/16 职场文书
英文演讲稿开场白
2014/08/25 职场文书
开展创先争优活动总结
2014/08/28 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
windows安装python超详细图文教程
2021/05/21 Python
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android