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去除字符串两端空格的简单实例
Dec 27 Javascript
$.each遍历对象、数组的属性值并进行处理
Jul 18 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
Apr 29 Javascript
JS实现自动变化的导航菜单效果代码
Sep 09 Javascript
node.js+express制作网页计算器
Jan 17 Javascript
node.js微信公众平台开发教程
Mar 04 Javascript
Angular.js中$resource高大上的数据交互详解
Jul 30 Javascript
laydate日历控件使用方法详解
Nov 20 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
Apr 10 Javascript
axios 封装上传文件的请求方法
Sep 26 Javascript
JavaScript实现背景自动切换小案例
Sep 27 Javascript
解决vue 给window添加和移除resize事件遇到的坑
Jul 21 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中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
2016/11/09 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
Python自定义线程类简单示例
2018/03/23 Python
python plotly绘制直方图实例详解
2019/07/22 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
python与js主要区别点总结
2020/09/13 Python
Python爬虫开发与项目实战
2020/12/16 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
优纳科技软件测试面试题
2012/05/15 面试题
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
文化活动实施方案
2014/03/28 职场文书
团日活动总结报告
2014/06/25 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
研究生个人学年总结
2015/02/14 职场文书
老公婚前保证书
2015/02/28 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android