vue-路由精讲 - 二级路由和三级路由

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

 

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'
20 
21 
22 
23 
24 Vue.use(VueRouter)
25 
26 const routes = [
27     {path:'/',      name:'homeLink',   component:Home},
28     {path:'/menu',  name:'menuLink',   component:Menu},
29     {path:'/admin', name:'adminLink',  component:Admin},
30     {path:'/about', name:'aboutLink', redirect:'/about/contact', component:About, children:[            
                       //表示about页面中默认跳转到/about/contact 这个路由页面下。
31 {path:'/about/contact', name:'contactLink', redirect:'/personName', component:Contact, children:[
                       //在/about/contact页面中默认展现三级路由personName 的内容。
32 {path:'/phone', name:"phoneNumber", component:Phone}, 33 {path:'/personName', name:"personName", component:PersonName}, 34 ]}, 35 {path:'/history',name:'historyLink',component:History}, 36 {path:'/delivery',name:'deliveryLink',component:Delivery}, 37 {path:'/orderingGuide',name:'orderingGuideLink',component:OrderingGuide}, 38 ]}, 39 {path:'/login', name:'loginLink', component:Login}, 40 {path:'/register', name:'registerLink', component:Register}, 41 // {path:'*',redirect:'/'}, 42 ] 43 44 const router = new VueRouter({ 45 routes, 46 mode:'history' 47 }) 48 49 new Vue({ 50 el: '#app', 51 router, 52 render: h => h(App) 53 })

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> 

 

猜你喜欢

转载自www.cnblogs.com/gshao/p/9424565.html