Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.4k views
in Technique[技术] by (71.8m points)

vue router 不同的配置方式的区别

请教一下如下两种方式有什么区别,请分别列举一下

方式一

image.png

方式二
image.png

Layout 和 Home 组件都是跟路由组件

Home 定义方式,是将所有子路由集中在了一起

第一个截图的两个包含 Layout 的路由,其实是可以合并都挂载到 / 下的,合并后和第二个截图定义的路由形式就一致了,请问这两种定义方式区别有哪些呢?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

我来回答一下吧,有不同见解的欢迎浏览探讨

首先说一下我原来的疑惑:我原以为是出于性能的考虑所以大家才采用图一的方式,后来查阅相关的官方文档并没有看到对应的说明。

在对具体的代码业务进行分析后,得出以下观点:

  1. 可以合并图一的方式,改为都放到 / 跟路径的 children 中
  2. 大家都采用图一方式的原因:

比方现在有个“系统管理”,系统管理下有个“用户管理”, 系统管理只是一个分类名称,并没有具体的组件,而用户管理是有具体的组件页面的

{
    path: '/system',
    name: 'system',
    title: '系统管理',
    component: Home,
    children: [
        {
            path: 'user',
            name: 'user',
            title: '用户',
            component: () => import('user.vue'),
        }
    ]
}

如果是放到 / 跟下

{
    path: '/',
    name: 'home',
    component: Home,
    children: [
        {
            path: 'system',
            name: 'system',
            title: '系统管理',
            /* 注意这里的 System 组件,需要额外的添加 */
            component: System,
            children: [
               {
                    path: 'user',
                    name: 'user',
                    title: '用户',
                    component: () => import('user.vue'),
                }
            ]
        }
    ]
}

这里的 System 组件,实则是可以不用的 但是因为多了一个路由层级,所以需要加一层 router-view

并且如果我们去掉 / 跟下的 system 这一层,又失去了我们想分模块的初衷

最后得出结论:每一个模块独立出来,即不用添加额外的组件, 又实现了分模块管理


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...