vue 路由 使用 require.context 一行代码 自动导入 所有路由文件

在项目里 src/router/component 文件夹下 有N个路由文件
路径: src/router/component/about.js

import Layout from "@/layout";
export default [  // 用 export default 导出
  {
    path: "/about",
    component: Layout,
   }
   .....
] 


路径: src/router/component/news.js

import Layout from "@/layout";
export default [  // 用 export default 导出
  {
    path: "/news",
    component: Layout,
   }
   .....
] 

项目router/index.js 路由引入js文件,一个一个引入数目太多怎么办?

像这种情况!image.png

可以使用 require.context 优化项目代码
我们封装一个方法,可以自动导入路由
路径: src/utils/importAll.js

// 通俗易懂方式
export function importAllFn(ctx = {}) {
  let routers = [];
  ctx.keys().forEach(function (item) {
    routers.push(ctx(item).default);
  });
  routers = routers.filter((re) => !!re).flat(2);  // 确保 引入的路由不能为空    // 有二维数组 要扁平化
  return routers;
}

// 优化后 
export function importAllFn(ctx = {}) {
  let routers = [];
  routers = (ctx.keys().map((item) => ctx(item).default || [])).flat(2)  // routers = routers.flat(2); 
  return routers;
}

// 持续优化
export function importAllFn(ctx = {}) {
  return (ctx.keys().map((item) => ctx(item).default || [])).flat(2) 
}
在router/index.js 里面引入
路径: src/router/index.js

// 自动引入路由 方法
import { importAllFn } from "@/utils/importAll";

// 传入参数 得到路由处理后的集合  importAll 相当于routes
let importAll = importAllFn(require.context("./component", false, /.js$/));

把项目里面几十行代码可以压缩到 1行,是不是炒鸡爽。
后期有新的路由 只需要在 router/component 文件夹下创建js文件即可,不需要再次手动引入,封装的方法会自动引入 是不是贼方便…

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端酱紫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值