前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue路由模块化

Vue路由模块化

作者头像
wade
发布2020-06-24 16:48:48
7700
发布2020-06-24 16:48:48
举报
文章被收录于专栏:coding个人笔记coding个人笔记

之前的项目从来没有对路由进行模块化,很早之前一个同学发过一个项目,我当时看了路由,觉得很不错,那就是进行了模块化,只是都没去认真了解一下。今天分享个vue的路由模块化。

我们用脚手架生成一个项目之后,默认就会有router文件夹,里面只有index.js,这时候我们就可以新建几个模块的路由,比如用户模块、商品模块、默认模块的js,然后每个模块里面配置属于这个模块的路由:

index.router.js:

代码语言:javascript
复制
export default [
    {
        path: '/home',
        name: 'Home',
        component: () => import(/* webpackChunkName: "home" */ '../views/Home.vue')
    },
    {
        path: '*',
        name: '404',
        component: () => import(/* webpackChunkName: "404" */ '../views/404.vue')
    },
]

user.router.js:

代码语言:javascript
复制
export default [
    {
        path: '/login',
        name: 'Login',
        component: () => import(/* webpackChunkName: "login" */ '../views/Login.vue')
    },
    {
        path: '/register',
        name: 'Register',
        component: () => import(/* webpackChunkName: "register" */ '../views/Register.vue')
    },
]
代码语言:javascript
复制
component: () => import(/* webpackChunkName: "register" */ '../views/Register.vue')

这种语法是动态导入的语法,当访问这个页面路由的时候才去加载这个组件,webpackChunkName是打包之后生成的chunk的名字。然后*是配置404页面使用的,之前居然都不知道这个东西。

接着就是在入口文件也就是index.js里面把模块加载变成一个数组:

代码语言:javascript
复制
const routes = [];
const files = require.context('./', false, /\.router.js$/);
files.keys().forEach(key => {
  routes.push(...files(key).default);
});

之前都是写在这个routes数组里面,现在通过require.context直接加载文件内容,这个语法是webpack提供的,只有webpack能用。模块命名都加了router主要是给这个语法使用,可以通过正则匹配,完全可以不使用这个。

404那个页面不需要单独拿出来到routes最后push,因为VueRouter内部会帮我们放到最后去。

Vue的路由模块化是真的简单,只是自己之前都没想着去做这些事,现在想想,还真的得做,不然页面几十几百个的时候,index.js越来越多,并不是很好维护。

其实不只是vue路由,包括其他地方,比如vuex等,也尽量都模块化。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 coding个人笔记 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档