【vue3】vue路由拆包和自动导入

首先我们开看下src文件夹下router的结构

在这里插入图片描述
最外层是index.js我们放routes
然后modules里边放模块路由,
eg:login.js

const list = [
    {
        name: 'login',
        path: '/login',
        component: () => import('@/views/login/index.vue'),
        meta: { title: '登录' },
    },
];
export default list;

然后在index.js里如何拿到导出的list呢

1)基于vite

const files = import.meta.globEager('./modules/*.js');

const get_map = (files) => {
  const map = {};
  Object.keys(files).map((modulePath) => {
    let list = [];
    const file = files[modulePath];
    const name = modulePath.split('/')[2].split('.')[0];
    list = [...file.default];
    map[name] = list;
    return modulePath;
  });
  return map;
};

const map = get_map(files);

2)基于webpack

const request = require.context('./modules', true, /\.js$/);//返回是一个方法

const get_map = (request) => {
  const map = {};
  request.keys().map(path => {
    const context = request(path).default || request(path);
    const name = (path.split('.')[1]);
    const key = name.substr(1,name.length - 1);
    const list = [...context];
    map[key] = list;
    return path;
  });
  return map;
};
const map = get_map(request);

最后具体往routes里导入内容的时候就很简单了

const routes = [
  {
	....
  },
  //登录
  ...(map.login || []),
]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值