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 相关文章推荐
javascript制作2048游戏
Mar 30 Javascript
js实现文字闪烁特效的方法
Dec 17 Javascript
JS实现的倒计时效果实例(2则实例)
Dec 23 Javascript
jQuery删除当前节点元素
Dec 07 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
Aug 17 Javascript
详解JS取出两个数组中的不同或相同元素
Mar 20 Javascript
JS实现滚动条触底加载更多
Sep 19 Javascript
layui多图上传实现删除功能的例子
Sep 23 Javascript
详解vue中多个有顺序要求的异步操作处理
Oct 29 Javascript
vue data对象重新赋值无效(未更改)的解决方式
Jul 24 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
Jul 31 Javascript
详细聊聊浏览器是如何看闭包的
Nov 11 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
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
[00:12]2018DOTA2亚洲邀请赛 sylar表现SOLO技艺
2018/04/06 DOTA
Python中__name__的使用实例
2015/04/14 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
开始着手第一个Django项目
2015/07/15 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
Python的装饰器用法学习笔记
2016/06/24 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
成人大专生实习期的自我评价
2013/10/02 职场文书
25岁生日感言
2014/01/13 职场文书
七一党日活动总结
2014/07/08 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
大学生操行评语大全
2014/12/31 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
会议简报格式范文
2015/07/20 职场文书
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers
Nginx跨域问题解析与解决
2022/08/05 Servers