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 强制弹出窗口代码研究-又一款代码
Mar 20 Javascript
JS操作Cookies的小例子
Oct 15 Javascript
表单验证正则表达式实例代码详解
Nov 09 Javascript
javascript实现任务栏消息提示的简单实例
May 31 Javascript
灵活使用数组制作图片切换js实现
Jul 28 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
Apr 07 Javascript
jQuery tip提示插件(实例分享)
Apr 28 jQuery
微信小程序 数据绑定及运算的简单实例
Sep 20 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
Apr 28 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
Aug 12 Javascript
关于AngularJS中几种Providers的区别总结
May 17 Javascript
Vue.js中Line第三方登录api的实现代码
Jun 29 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
mysql limit查询优化分析
2008/11/12 PHP
PHP mkdir()定义和用法
2009/01/14 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
javascript控制台详解
2015/06/25 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
微信小程序实现签到功能
2018/10/31 Javascript
微信小程序实现九宫格抽奖
2020/04/15 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
Cython 三分钟入门教程
2009/09/17 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
24式加速你的Python(小结)
2019/06/13 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
市场部经理岗位职责
2014/04/10 职场文书
离婚协议书怎么写
2014/09/12 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
前台岗位职责
2015/02/13 职场文书