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 相关文章推荐
Mootools 1.2教程(2) DOM选择器
Sep 14 Javascript
ExtJS自定义主题(theme)样式详解
Nov 18 Javascript
js 调用百度地图api并在地图上进行打点添加标注
May 13 Javascript
js实现网页标题栏闪烁提示效果实例分析
Nov 20 Javascript
js实现键盘控制DIV移动的方法
Jan 10 Javascript
JavaScript调试的多个必备小Tips
Jan 15 Javascript
jQuery zTree 异步加载添加子节点重复问题
Nov 29 jQuery
vue.js 微信支付前端代码分享
Feb 10 Javascript
Vue render函数实战之实现tabs选项卡组件
Apr 22 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
Sep 23 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
Sep 27 Javascript
JavaScript中作用域链的概念及用途讲解
Aug 06 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
PHP4实际应用经验篇(7)
2006/10/09 PHP
php+mysql事务rollback&amp;commit示例
2010/02/08 PHP
php中批量删除Mysql中相同前缀的数据表的代码
2011/07/01 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
浅析Ajax语法
2016/12/05 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
vue element upload实现图片本地预览
2019/08/20 Javascript
Python中用altzone()方法处理时区的教程
2015/05/22 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
python代码区分大小写吗
2020/06/17 Python
python文件编写好后如何实践
2020/07/07 Python
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
户籍证明的格式
2014/01/13 职场文书
集体婚礼证婚词
2014/01/13 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
社区务虚会发言材料
2014/10/20 职场文书
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
python 实现图片特效处理
2022/04/03 Python
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL