vue路由嵌套

作者: 流眸Tel | 来源:发表于2019-04-20 23:52 被阅读1次

关于嵌套路由

  在实际项目中,多个前端页面由于需求而通常由多层嵌套的组件组合而成,尤其是多导航界面。此时,路由嵌套(vue-router)的优点则表现了出来。嵌套路由就是在一个被路由过来的页面下,可以继续使用路由来加载新的组件。所谓嵌套,也可以理解成父子路由。

应用场景

  • 各样式导航栏切换;
  • 标签/选项卡切换;

案例

  此处以常用布局F形导航当作分析案例:

1.效果
路由嵌套.gif
2.解析
/App/about/blog                       /App/about/msg    
+------------------+                  +-----------------+
| about            |                  | about            |
| +--------------+ |                  | +-------------+ |
| | blog         | |  +------------>  | | msg         | |
| |              | |                  | |             | |
| +--------------+ |                  | +-------------+ |
+------------------+                  +-----------------+
3.目录拆分

观察效果图,容易得出可将图拆分为多个组件。在主要vue中挂载首页关于组件,然后在关于组件中再次挂载子路由博客信息组件。项目中src目录拆分如下:

├── src 
│  ├── page 
│  │  ├── index.vue // 主页组件
│  │  ├── about.vue // 关于组件
│  │  ├── about 
│  │  │  ├──  blog.vue  // 博客子组件
│  │  │  ├──  msg.vue   // 信息子组件
│  ├── router   
│  │  ├── index.js  
│  ├── App.vue  
│  ├── main.js
4.通用代码

从目录中可以轻易的看出每个组件及所代表的模块。其中,index & blog & msg 三个组件均为一个带文字描述的块级元素,此处给出一个示例,不再赘述。

<template>
    <div>
        这是xx模块内容
    </div>
</template>
5.路由管理

router/index.js进行路由管理,代码如下。此处使用懒加载模式处理。开篇已经描述,嵌套路由可以理解为父子路由,不仅如此描述,事实上我们在做路由管理也是这么处理的。注:在children中的path不必再添加/,否则会出错。

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

export default new VueRouter({
    routes: [
        {
            path: '/index',
            component: resolve => require(['@/page/index'],resolve),
        },
        {
            path: '/about',
            component: resolve => require(['@/page/about'],resolve),
            children: [
                {
                    path: 'blog',
                    component: resolve => require(['@/page/about/blog'],resolve),
                },
                {
                    path: 'msg',
                    component: resolve => require(['@/page/about/msg'],resolve),
                }
            ]
        },
    ]
})

6.根组件配置

App.vue需要挂载首页组件和关于组件。值得一提的是,由于在点击关于的时候,应该直接跳往第一项子级项,也就是博客,因此注意路由路径。此外,切记to:"[路径]" 中的[路径]一定要加上/,否则多次路由会出现路由重复而无法正确找到路由问题

<template>
    <div id="app">
       <header class="header">
           <router-link to="/index">首页</router-link>
           <router-link to="/about/blog">关于</router-link>
       </header>


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

<script>
    export default {
        name: 'App',
    }
</script>

<style type="text/scss" lang="scss">
     /*略*/
</stylle>
7.about组件配置

所谓嵌套,或者说父子路由,在此组件表现出来,也就是将此组件当成父组件,再次挂载两个(或多个)子组件。同样,要注意路径一定要加上/。如下:

<template>
    <div class="about">
        <div class="left">
            <router-link to="/about/blog">博客</router-link>
            <router-link to="/about/msg">信息</router-link>
        </div>
        <div class="right">
            <router-view></router-view>
        </div>
    </div>
</template>

<script>
    export default {
        name: "about"
    }
</script>

<style scoped type="text/scss" lang="scss">
    .about{
        display: flex;
        .left{
            width: 100px;
            border-right: 1px solid #aaa;
            height: calc(100vh - 46px);
            display: flex;
            flex-direction: column;
            a{
                line-height: 40px;
                text-align: center;
                font-size: 12px;
                text-decoration: none;
                color: #6260ff;
            }
        }
        .right{
            flex: 1;
        }
    }
</style>

8.完成

其实步骤就这么多,不过在实际项目中还是要多加动脑灵活运用,理解嵌套路由含义及路由配置规则,一切就会变得简单起来~


  有几点注意事项,包括上面也有提到过:

  • 子路由要写在children下;
  • router-link 中,to中的路径要加/,代表根路径;
  • 每一个子路由都可以嵌套多个组件;
  • style中加入scoped属性,防止样式互相干扰。

相关文章

  • vue路由

    路由:vue-router 案例: 1.路由 2.路由的嵌套

  • 6 VUE路由

    vue-> SPA应用,单页面应用(引入vue-router.js) 路由嵌套(多层路由): 路由其他信息:

  • 手写 Vue Router、手写响应式实现、虚拟 DOM 和 D

    Vue-Router 原理实现 一、Vue-Router 动态路由 二、Vue-Router 嵌套路由 三、Vue...

  • vue嵌套路由与404重定向实现方法分析

    第一部分: vue嵌套路由 嵌套路由是什么? 嵌套路由就是在一个被路由过来的页面下可以继续使用路由,嵌套也就是路由...

  • vue中的路由

    vue中4中路由包含: 1、动态路由2、嵌套路由3、编程式路由4、命名式路由 1、动态路由 2、嵌套路由 3、编程...

  • 前端理论面试-router+axios

    Vue Router Vue Router 是 Vue.js 官方的路由管理器。 包含的功能有: 嵌套的路由/视图...

  • vue-router

    前端路由的基本原理 vue-router的基本使用 命名路由 路由参数 嵌套路由

  • vue 第八章

    路由1.路由下载用gitnpm install vuenpm install vue-router 2.路由嵌套嵌...

  • vue-router 常用知识点一

    目录 - 1.vue-router响应 路由参数 的变化 - 2.vue-router如何定义嵌套路由? - 3....

  • Vue-基础-05-重点

    Vue-基础-day05-重点 01-基础-路由-vue-router-嵌套路由 children用法和route...

网友评论

    本文标题:vue路由嵌套

    本文链接:https://www.haomeiwen.com/subject/ogwrgqtx.html