Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vue嵌套路由

vue嵌套路由

作者头像
流眸
发布于 2019-08-12 08:06:29
发布于 2019-08-12 08:06:29
1.3K00
代码可运行
举报
运行总次数:0
代码可运行
关于嵌套路由

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

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

案例

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

1.效果
2.解析
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/App/about/blog                       /App/about/msg
+------------------+                  +-----------------+
| about            |                  | about            |
| +--------------+ |                  | +-------------+ |
| | blog         | |  +------------>  | | msg         | |
| |              | |                  | |             | |
| +--------------+ |                  | +-------------+ |
+------------------+                  +-----------------+
3.目录拆分

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
├── src
│  ├── page
│  │  ├── index.vue    // 主页组件
│  │  ├── about.vue    // 关于组件
│  │  ├── about
│  │  │  ├──  blog.vue    // 博客子组件
│  │  │  ├──  msg.vue    // 信息子组件
│  ├── router
│  │  ├── index.js
│  ├── App.vue
│  ├── main.js
4.通用代码

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
    <div>
        这是xx模块内容
    </div>
</template>
5.路由管理

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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:"[路径]" 中的[路径]一定要加上 /,否则多次路由会出现路由重复而无法正确找到路由问题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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组件配置

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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属性,防止样式互相干扰。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 流眸 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
06 . Vue路由简介,原理,实现及嵌套路由,动态路由,编程式导航
基于URL的hash实现(点击菜单的时候改变URL的hash,根据hash的变化控制组件的切换)
iginkgo18
2020/11/24
2K0
06 . Vue路由简介,原理,实现及嵌套路由,动态路由,编程式导航
18.路由的嵌套
1.在components目录下新建目录User,目录下新建两个组件AddUser.vue和UserList.vue AddUser.vue <template> <div> <h2>{{msg}}</h2> </div> </template> <script> export default { name: 'home', data () { return { msg:'增加用户' } }, methods:{
玩蛇的胖纸
2019/10/21
7530
vue常用手册
1.在src/components目录下新建User.vue文件,同时再新建User目录,在User目录下新建UserAdd.vue和UserList.vue两个文件
玩蛇的胖纸
2018/12/25
8860
07Vue.js快速入门-Vue路由详解
对于前端来说,其实浏览器配合超级连接就很好的实现了路由功能。但是对于单页面应用来说,浏览器和超级连接的跳转方式已经不能适用, 所以各大框架纷纷给出了单页面应用的解决路由跳转的方案。 Vue框架的兼
老马
2018/01/05
1.2K0
[Vue 牛刀小试]:第十二章 - 使用 Vue Router 实现 Vue 中的前端路由控制
  前端路由是什么?如果你之前从事的是后端的工作,或者虽然有接触前端,但是并没有使用到单页面应用的话,这个概念对你来说还是会很陌生的。那么,为什么会在单页面应用中存在这么一个概念,以及,前端路由与我们后端的路由有什么异同呢。本章,我们就来简单介绍下前端路由的概念,以及如何在 Vue 中使用 Vue Router 来实现我们的前端路由。
程序员宇说
2019/07/31
1.1K0
手写vue-router核心原理
最近也在观察vue3新特性,抽空玩一玩嵌套路由的vue-router,直接上代码项目目录结构图片代码展示app.vue<template> <div id="app"> <div> <router-link to="/">Index</router-link> | <router-link to="/person">Person</router-link> | <router-link to="/person/info">PersonInfo</router-link>
hellocoder2029
2022/09/26
4280
Vue 08.webpack中使用.vue组件
注意:不能使用npm下载,需要从 github 上下载现成的包并解压,然后拷贝到项目中使用
LittlePanger
2020/04/14
1.2K0
Vue教程(路由Router-嵌套及案例)
Vue 中路由在使用的时候 嵌套 使用是非常频繁的,所以本文我们就来通过案例来介绍下嵌套路由的使用。
用户4919348
2019/08/07
1.1K0
vue 路由嵌套_vue路由实现方式
有时候在路由中,主要的部分是相同的,但是下面可能是不同的。比如访问首页,里面有新闻类的/home/news,还有信息类的/home/message。这时候就需要使用到嵌套路由。项目结构如下:
全栈程序员站长
2022/09/16
6180
vue 路由嵌套_vue路由实现方式
(四)嵌套路由子路由
嵌套路由子路由 App.vue <!-- app.vue --> <template> <nav> <router-link to="/">首页</router-link> <router-link to="/about">关于</router-link> </nav> <router-view></router-view> </template> <script> export default {}; </script> 子组件 <!-- 子组件嵌套路由 --> <tem
老怪兽
2023/02/22
5080
Vue之路由(Router)
SPA(single page application):单一页面应用程序,只有一个完整的页面;它在加载页面时,不会加载整个页面,而是只更新某个指定的容器中内容。单页面应用(SPA)的核心之一是: 更新视图而不重新请求页面。
摸鱼的G
2023/02/22
5500
Vue之路由(Router)
vue路由嵌套,配置children嵌套路由
嵌套路由就是路由里面嵌套他的子路由,可以有自己的路由导航和路由容器(router-link、router-view),通过配置children可实现多层嵌套
青梅煮码
2023/03/02
1.3K0
Vue 06.路由
下面例子功能为,点击/account的导航链接后,展示account组件,该组件包括登录注册导航链接和登录注册的组件,即登录注册组件属于account组件
LittlePanger
2020/04/14
5870
前端路由工作原理与使用
网易云音乐 小米移动端 多页应用:与单页应用相对应的,不同的功能通过不同的页面来实现
CRMEB商城源码
2022/05/19
2K0
前端路由工作原理与使用
在 Vue.js 中使用嵌套路由
随着 Vue.js 单页应用(SPA)变得相当复杂,你开始需要 Vue 路由以及嵌套路由。嵌套路由允许更复杂的用户界面以及相互嵌套的组件。让我们创建一个相对简单的用例,来展示 Vue Router 中嵌套路由的实用性。
疯狂的技术宅
2020/03/16
1.7K0
在 Vue.js 中使用嵌套路由
vue路由vue-router
步骤二:在模块化工程中使用它(因为是一个插件,所以可以通过Vue.use()来安装路由功能)
有勇气的牛排
2023/06/25
2050
Vue3中的路由功能:安装和配置Vue Router、路由的基本用法、动态路由、嵌套路由
Vue3是一款流行的JavaScript框架,它提供了许多强大的功能来简化前端开发。其中一个重要的特性就是路由管理。在Vue3中,我们可以使用Vue Router库来实现路由功能。本文将详细介绍Vue3中的路由功能,包括安装和配置Vue Router、路由的基本用法、动态路由、嵌套路由等方面。
网络技术联盟站
2023/07/05
9.9K0
47. Vue使用children属性实现路由嵌套
前面基本演示完了vue-router的基本用法,但是当组件之间嵌套子组件,这个嵌套的路由该怎么写呢?
Devops海洋的渔夫
2020/07/22
2.4K0
vue学习笔记4
考虑一个问题:想要实现 名 和 姓 两个文本框的内容改变,则全名的文本框中的值也跟着改变;(用以前的知识如何实现???)
用户6362579
2019/09/29
6340
vue-router详解——小白速会
一、概述 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。 vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。 而传统的多页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。 路由中有三个基本的概念 route, routes, router。 1. route,它是一条路由,由这个英文单词也可以看出来,它是单数, Home按钮  => home内容
柴小智
2018/04/16
1.7K0
vue-router详解——小白速会
相关推荐
06 . Vue路由简介,原理,实现及嵌套路由,动态路由,编程式导航
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验