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 相关文章推荐
jQuery使用手册之三 CSS操作
Mar 24 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
May 18 Javascript
php上传图片并给图片打上透明水印的代码
Jun 07 Javascript
为开发者准备的10款最好的jQuery日历插件
Feb 04 Javascript
浅谈Javascript 数组与字典
Jan 29 Javascript
javascript中hasOwnProperty() 方法使用指南
Mar 09 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
Feb 23 Javascript
详解AngularJS 模块化
Jun 14 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
Nov 25 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
Jun 17 Javascript
JavaScript实现10秒后再次获取验证码
Dec 02 Javascript
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
如何利用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 strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
php发送post请求函数分享
2014/03/06 PHP
PHP伪静态Rewrite设置之APACHE篇
2014/07/30 PHP
PHP通过引用传递参数用法分析
2016/12/01 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
几个javascript操作word的参考代码
2009/10/26 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
HTML的select控件美化
2017/03/27 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
Python的subprocess模块总结
2014/11/07 Python
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
Django组件cookie与session的具体使用
2019/06/05 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
python logging模块的使用详解
2020/10/23 Python
python drf各类组件的用法和作用
2021/01/12 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
九年级政治教学反思
2014/02/06 职场文书
班级文化标语
2014/06/23 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
初三化学教学反思
2016/02/22 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis