require.context

主要使用require.context实现前端工程化动他引入文件
require.context(directory, useSubdirectories = false, regExp = /^.//)
第一个参数目标文件夹
是否查找子集 true | false
正则匹配
比如:
require.context(’./router’,true,/.routes.js/
可以理解为获取router文件下以.routes.js结尾的文件,知道这个以后,就可以在项目动态引入文件,方便使用了
理由模块化
同理,也可以解决另一个问题,在vue项目中,路由文件会随着项目增大而越来越大,这个这个我们可以使用require.context进行模块化管理,首页定义好主路由,router.js

创建页面模块

假如这里的index.vue和login.vue是两个模块
在这里插入图片描述

创建路由模块

分别创建index模块和login模块的路由文件
在这里插入图片描述

index.routes.js
children下则是这个模块的路由

export default {
    path: '/index',
    name: 'index',
    component: () => import('../views/index.vue'),
    //子路由
    children:[

    ]
}

login.routes.js

export default {
    path: '/login',
    name: 'login',
    component: () => import('../views/login.vue'),
    //子路由
    children:[

    ]
}

router/index.js

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

const routerList = [];
function importAll(r){
  //r.keys() 拿到所有匹配到的路由文件
  r.keys().forEach(
  	//r(key).default拿到default的路由对象
    (key) => routerList.push(r(key).default)
  );
}
//这里的目录和规则可以看自己习惯,这里获取的是routes下以.routes.js结尾的文件
//1. 路径
//2. 是否匹配子级文件
//3. 规则
importAll(require.context('./',false,/\.routes.js/))

const routes = [
  ...routerList,
]
const router = new VueRouter({
  routes
})

export default router

这样就可以在routes下面按模块管理路由了,不管加入什么,只需要在routes下新建就可以了