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 相关文章推荐
jquery text()要注意啦
Oct 30 Javascript
动态创建样式表在各浏览器中的差异测试代码
Sep 13 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
May 07 Javascript
jquery 检测元素是否存在的实例代码
Nov 19 Javascript
bootstrap中使用google prettify让代码高亮的方法
Oct 21 Javascript
video.js使用改变ui过程
Mar 05 Javascript
jQuery复合事件用法示例
Jun 10 jQuery
JS检测window.open打开的窗口是否关闭
Jun 25 Javascript
AngularJS实现图片上传和预览功能的方法分析
Nov 08 Javascript
vue实现商品加减计算总价的实例代码
Aug 12 Javascript
vue-cli 为项目设置别名的方法
Oct 15 Javascript
Vue与React的区别和优势对比
Dec 18 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 替换模板变量实现步骤
2009/08/24 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
Jquery Uploadify上传带进度条的简单实例
2014/02/12 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
什么是Python包的循环导入
2020/09/08 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
房产分割协议书范文
2014/11/21 职场文书
七年级作文之秋游
2019/10/21 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
Pytest中conftest.py的用法
2021/06/27 Python
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript