vue-路由精讲 二级路由和三级路由的作用


Posted in Javascript onAugust 06, 2020

1、我们继续上一个案例 vue -- 路由精讲制作导航 -- 从无到有 ,在 about文件夹下 创建一些文件夹。如下:

vue-路由精讲 二级路由和三级路由的作用

2、编写about.vue代码。当我们点击导航中 “关于我们” ,就会显示该部分内容。代码中写了四个可供点击后可以跳转的模块。和 <router-view></router-view> 表示你点击了哪个组件,哪个组件就会渲染到这里来。

其中注意:css样式,我们直接引入bootstrap中的导航的样式,在标签中直接添加class属性的值就可以了。

about.vue代码

<template>
  <div>
    <div class="row mb-5">  //row 代表行, mb-5 表示margin-bottom距离下面5
      <!-- 导航 -->
      <div class="col-4"> //四列
        <div class="list-group mb-5">
          <router-link tag="li" class="nav-link" :to="{name:'historyLink'}">
            <a class="list-group-item list-group-item-action">历史订单</a>  
          </router-link>
          <router-link tag="li" class="nav-link" :to="{name:'contactLink'}">
            <a class="list-group-item list-group-item-action">联系我们</a>  
          </router-link>
          <router-link tag="li" class="nav-link" :to="{name:'orderingGuideLink'}">
            <a class="list-group-item list-group-item-action">点餐文档</a>  
          </router-link>
          <router-link tag="li" class="nav-link" :to="{name:'deliveryLink'}">
            <a class="list-group-item list-group-item-action">快递信息</a>  
          </router-link>
        </div>
      </div>
      <!-- 导航所对应的内容 -->
      <div class="col-8"> //8列
        <router-view></router-view>
      </div>
    </div>
  </div>
</template>

3、配置二级路由和三级路由

注意:我们要在about页面下添加四个路由,用到 children 属性, 而且还用到 redirect 属性,默认跳转到指定路由,具体操作看代码和注释。

main.js代码

import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App.vue'
import Home from './components/Home.vue'
import Menu from './components/Menu.vue'
import Admin from './components/Admin.vue'
import About from './components/about/About.vue'
import Login from './components/Login.vue'
import Register from './components/Register.vue'

//二级路由
import Contact from './components/about/Contact.vue'
import Delivery from './components/about/Delivery.vue'
import History from './components/about/History.vue'
import OrderingGuide from './components/about/OrderingGuide.vue'

//三级路由
import Phone from './components/about/contact/Phone.vue'
import PersonName from './components/about/contact/PersonName.vue'

Vue.use(VueRouter)

核心代码 二级路由和三级路由的跳转

const routes = [
  {path:'/',   name:'homeLink',  component:Home},
  {path:'/menu', name:'menuLink',  component:Menu},
  {path:'/admin', name:'adminLink', component:Admin},
  {path:'/about', name:'aboutLink', redirect:'/about/contact', component:About, children:[      










 //表示about页面中默认跳转到/about/contact 这个路由页面下。
    {path:'/about/contact', name:'contactLink', redirect:'/personName', component:Contact, children:[











 //在/about/contact页面中默认展现三级路由personName 的内容。
      {path:'/phone', name:"phoneNumber", component:Phone},
      {path:'/personName', name:"personName", component:PersonName},
    ]},
    {path:'/history',name:'historyLink',component:History},
    {path:'/delivery',name:'deliveryLink',component:Delivery},
    {path:'/orderingGuide',name:'orderingGuideLink',component:OrderingGuide},
  ]},
  {path:'/login', name:'loginLink', component:Login},
  {path:'/register', name:'registerLink', component:Register},
  // {path:'*',redirect:'/'},
]

const router = new VueRouter({
  routes,
  mode:'history'
})

new Vue({
 el: '#app',
 router,
 render: h => h(App)
})

Contact.vue代码

<template>
  <div class="card text-dark bg-light mb-3">
    <div class="card-header">联系我们</div>
    <div class="card-body">
      <h4 class="card-title">联系我们</h4>
      <p class="card-text">1623487989@qq.com</p>

      <router-link :to="{name:'phoneNumber'}">电话</router-link>
      <router-link :to="{name:'personName'}">联系人</router-link>

      <router-view></router-view>
    </div>
  </div>
</template>

Delivery.vue代码

<template>
  <div class="card text-dark bg-light mb-3">
    <div class="card-header">快递信息</div>
    <div class="card-body">
      <h4 class="card-title">快递信息</h4>
      <p class="card-text">1623487989@qq.com</p>
    </div>
  </div>
</template>

History.vue代码

<template>
  <div class="card text-dark bg-light mb-3">
    <div class="card-header">历史订单</div>
    <div class="card-body">
      <h4 class="card-title">历史订单</h4>
      <p class="card-text">1623487989@qq.com</p>
    </div>
  </div>
</template>

OrderingGuide.vue代码

<template>
  <div class="card text-dark bg-light mb-3">
    <div class="card-header">点餐文档</div>
    <div class="card-body">
      <h4 class="card-title">点餐文档</h4>
      <p class="card-text">1623487989@qq.com</p>
    </div>
  </div>
</template>

Phone.vue代码

<template> <h1>400040040404404</h1> </template>

PersonName.vue代码

<template> <h1>小劭</h1> </template>

补充知识:vue:菜单收缩功能

想要实现:点击菜单能收缩。(效果如下:)

点击前:

vue-路由精讲 二级路由和三级路由的作用

点击后:

vue-路由精讲 二级路由和三级路由的作用

思路:

首先我们要知道绅缩的按钮和菜单是否在一个页面。在一个页面就简单了。

如果不在一个页面,就会涉级到父子级传参,绅缩按钮模块中要把状态传给header,这是兄弟间的传递参数,需要用到 vuex。如果不用vuex的话,就通过主体去操作。绅缩按钮把状态传给主体是子传父,通过 this.$emit()。主体把状态传给菜单,是父传子,通过props ,菜单中需要接收主体中传过来的东西,要在 data 中定义props 在里面定义type、required、default。如果不清楚props 是啥,请百度。

操作:

1、先看整体布局

vue-路由精讲 二级路由和三级路由的作用

2、menu 模块

vue-路由精讲 二级路由和三级路由的作用

3、header 模块

vue-路由精讲 二级路由和三级路由的作用

以上这篇vue-路由精讲 二级路由和三级路由的作用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS对象与JSON格式数据相互转换
Feb 20 Javascript
javascript数字格式化通用类 accounting.js使用
Aug 24 Javascript
js关闭父窗口时关闭子窗口
Apr 01 Javascript
javascript常用方法汇总
Dec 02 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
Aug 11 Javascript
jquery插件jquery.confirm弹出确认消息
Dec 22 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
May 05 Javascript
jQuery遍历json的方法(推荐)
Jun 12 Javascript
轻松掌握JavaScript代理模式
Aug 26 Javascript
微信小程序 首页制作简单实例
Apr 07 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
Jul 12 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 Javascript
如何利用javascript接收json信息并进行处理
Aug 06 #Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
Aug 06 #Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
Aug 06 #Javascript
javascript实现时间日期的格式化的方法汇总
Aug 06 #Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
Aug 06 #Javascript
javascript读取本地文件和目录方法详解
Aug 06 #Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
Aug 06 #Javascript
You might like
提升PHP执行速度全攻略
2006/10/09 PHP
php仿ZOL分页类代码
2008/10/02 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
python实现感知器算法详解
2017/12/19 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
摄影专业毕业生求职信
2014/03/13 职场文书
公司委托书格式范文
2014/04/04 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
优秀团员事迹材料
2014/12/25 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
行政申诉状范文
2015/05/20 职场文书
教师读书笔记
2015/06/29 职场文书
圣诞晚会主持词
2015/07/01 职场文书
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang