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

时间:2022-11-03 21:27:15

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

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

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

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

about.vue代码

  1. <template>
  2. <div>
  3. <div class="row mb-5"> //row 代表行, mb-5 表示margin-bottom距离下面5
  4. <!-- 导航 -->
  5. <div class="col-4"> //四列
  6. <div class="list-group mb-5">
  7. <router-link tag="li" class="nav-link" :to="{name:'historyLink'}">
  8. <a class="list-group-item list-group-item-action">历史订单</a>
  9. </router-link>
  10. <router-link tag="li" class="nav-link" :to="{name:'contactLink'}">
  11. <a class="list-group-item list-group-item-action">联系我们</a>
  12. </router-link>
  13. <router-link tag="li" class="nav-link" :to="{name:'orderingGuideLink'}">
  14. <a class="list-group-item list-group-item-action">点餐文档</a>
  15. </router-link>
  16. <router-link tag="li" class="nav-link" :to="{name:'deliveryLink'}">
  17. <a class="list-group-item list-group-item-action">快递信息</a>
  18. </router-link>
  19. </div>
  20. </div>
  21. <!-- 导航所对应的内容 -->
  22. <div class="col-8"> //8列
  23. <router-view></router-view>
  24. </div>
  25. </div>
  26. </div>
  27. </template>

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

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

main.js代码

  1. import Vue from 'vue'
  2. import VueRouter from 'vue-router'
  3. import App from './App.vue'
  4. import Home from './components/Home.vue'
  5. import Menu from './components/Menu.vue'
  6. import Admin from './components/Admin.vue'
  7. import About from './components/about/About.vue'
  8. import Login from './components/Login.vue'
  9. import Register from './components/Register.vue'
  10.  
  11. //二级路由
  12. import Contact from './components/about/Contact.vue'
  13. import Delivery from './components/about/Delivery.vue'
  14. import History from './components/about/History.vue'
  15. import OrderingGuide from './components/about/OrderingGuide.vue'
  16.  
  17. //三级路由
  18. import Phone from './components/about/contact/Phone.vue'
  19. import PersonName from './components/about/contact/PersonName.vue'

Vue.use(VueRouter)

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

  1. const routes = [
  2. {path:'/', name:'homeLink', component:Home},
  3. {path:'/menu', name:'menuLink', component:Menu},
  4. {path:'/admin', name:'adminLink', component:Admin},
  5. {path:'/about', name:'aboutLink', redirect:'/about/contact', component:About, children:[
  6.                        //表示about页面中默认跳转到/about/contact 这个路由页面下。
  7. {path:'/about/contact', name:'contactLink', redirect:'/personName', component:Contact, children:[
  8.                        //在/about/contact页面中默认展现三级路由personName 的内容。
  9. {path:'/phone', name:"phoneNumber", component:Phone},
  10. {path:'/personName', name:"personName", component:PersonName},
  11. ]},
  12. {path:'/history',name:'historyLink',component:History},
  13. {path:'/delivery',name:'deliveryLink',component:Delivery},
  14. {path:'/orderingGuide',name:'orderingGuideLink',component:OrderingGuide},
  15. ]},
  16. {path:'/login', name:'loginLink', component:Login},
  17. {path:'/register', name:'registerLink', component:Register},
  18. // {path:'*',redirect:'/'},
  19. ]
  20.  
  21. const router = new VueRouter({
  22. routes,
  23. mode:'history'
  24. })
  25.  
  26. new Vue({
  27. el: '#app',
  28. router,
  29. render: h => h(App)
  30. })

Contact.vue代码

  1. <template>
  2. <div class="card text-dark bg-light mb-3">
  3. <div class="card-header">联系我们</div>
  4. <div class="card-body">
  5. <h4 class="card-title">联系我们</h4>
  6. <p class="card-text">1623487989@qq.com</p>
  7.  
  8. <router-link :to="{name:'phoneNumber'}">电话</router-link>
  9. <router-link :to="{name:'personName'}">联系人</router-link>
  10.  
  11. <router-view></router-view>
  12. </div>
  13. </div>
  14. </template>

Delivery.vue代码

  1. <template>
  2. <div class="card text-dark bg-light mb-3">
  3. <div class="card-header">快递信息</div>
  4. <div class="card-body">
  5. <h4 class="card-title">快递信息</h4>
  6. <p class="card-text">1623487989@qq.com</p>
  7. </div>
  8. </div>
  9. </template>

History.vue代码

  1. <template>
  2. <div class="card text-dark bg-light mb-3">
  3. <div class="card-header">历史订单</div>
  4. <div class="card-body">
  5. <h4 class="card-title">历史订单</h4>
  6. <p class="card-text">1623487989@qq.com</p>
  7. </div>
  8. </div>
  9. </template>

OrderingGuide.vue代码

  1. <template>
  2. <div class="card text-dark bg-light mb-3">
  3. <div class="card-header">点餐文档</div>
  4. <div class="card-body">
  5. <h4 class="card-title">点餐文档</h4>
  6. <p class="card-text">1623487989@qq.com</p>
  7. </div>
  8. </div>
  9. </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-路由精讲 二级路由和三级路由的作用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

原文链接:https://www.cnblogs.com/gshao/p/9424565.html