当前位置: 首页 > news >正文

前端批量导入方式

webpack批量导入

  • webpack中使用 require.context 实现自动导入
const files = require.context('./modules', false, /\.ts$/);
const modules = {};
files.keys().forEach((key) => {
     if (key === './index.ts') { return; }
     modules[key.replace(/(\.\/|\.ts)/g, '')] = files(key).default;
});
export default modules;

vite批量导入

  • vite中使用 import.meta.glob 实现自动导入
//Vite 支持使用特殊的 import.meta.glob 函数从文件系统导入多个模块:
const modules = import.meta.glob('./dir/*.js')
//以上将会被转译为下面的样子:
// vite 生成的代码
const modules = {
  './dir/foo.js': () => import('./dir/foo.js'),
  './dir/bar.js': () => import('./dir/bar.js')
}
//你可以遍历 modules 对象的 key 值来访问相应的模块:
for (const path in modules) {
  modules[path]().then((mod) => {
    console.log(path, mod)
  })
}
//匹配到的文件默认是懒加载的,通过动态导入实现,并会在构建时分离为独立的 chunk。如果你倾向于直接引入所有的模块(例如依赖于这些模块中的副作用首先被应用),
//你可以传入 { eager: true } 作为第二个参数:
const modules = import.meta.glob('./dir/*.js', { eager: true })
//以上会被转译为下面的样子:
// vite 生成的代码
import * as __glob__0_0 from './dir/foo.js'
import * as __glob__0_1 from './dir/bar.js'
const modules = {
  './dir/foo.js': __glob__0_0,
  './dir/bar.js': __glob__0_1
}
//具名导入,也可能你只想要导入模块中的部分内容,那么可以利用 import 选项。
const modules = import.meta.glob('./dir/*.js', { import: 'setup' })
// vite 生成的代码
const modules = {
  './dir/foo.js': () => import('./dir/foo.js').then((m) => m.setup),
  './dir/bar.js': () => import('./dir/bar.js').then((m) => m.setup)
}
//当与 eager 一同存在时,甚至可能可以对这些模块进行 tree-shaking。
const modules = import.meta.glob('./dir/*.js', { import: 'setup', eager: true })

相关文章:

  • 【深度学习的数学】导数
  • 【Java】抽象类和接口
  • vue3中ref和reactive的差异分析
  • C++中的异常和智能指针
  • 基础图表(一)
  • ClickHouse与TiDB实操对比:从入门到实战的深度剖析
  • vue遗漏的知识点(动态组件.)
  • Vue.js 和 Vue 3 全面详解指南
  • Open CASCADE学习|小球沿样条曲线运动
  • MP4音视频格式
  • 中间件漏洞-Tomcat篇
  • 架构思维:如何设计一个支持海量数据存储的高扩展性架构_数据分片、存储、复制与一致性的原理性问题
  • 数据库第二周作业
  • (UI自动化测试web端)第三篇:元素的常用操作方法_元素操作
  • JavaScript 对事件的反应机制
  • js实现判断图片宽度高度不超过容器宽高度,刚好在容器中显示完
  • FreeRTOS学习(十):任务调度器挂起与恢复机制详解
  • mysql中的聚簇索引,什么是聚簇索引和非聚簇索引
  • Android14 Settings应用添加有线网开关条目实现
  • Android设计模式之Builder模式
  • 中纪报:五一节前公开通报释放强烈信号,以铁律狠刹歪风邪气
  • 女乘客遭顺风车甩客、深夜丢高速服务区,滴滴霸道回应:赔五百元
  • 一回合摘下“狮心”,张名扬霸气回应观众:再嘘一个我听听
  • 清华成立人工智能医院,将构建“AI+医疗+教育+科研”闭环
  • 杨荫凯履新浙江省委常委、组织部部长,曾任中央财办副主任
  • 咖啡与乳腺健康之间,究竟有着怎样的复杂关系?