如何动态导入ECMAScript模块
作者:前端小智
简介:思否百万阅读,励志退休后,回家摆地摊的人。
来源:SegmentFault 思否社区
ECMAScript(又名ES2015或ES)模块是在JavaScript中组织内聚代码块的一种方法。
ES模块系统有2个部分:
import模块 - 使用 import { func } from './myModule' export模块- 使用 export const func = () => {}
import { concat } from './concatModule';
concat('a', 'b'); // => 'ab'
export const concat = (paramA, paramB) => paramA + paramB;
1. 动态模块的导入
当import关键字用作函数而不是静态导入语法时:
const module = await import(pathToModule);
async function loadMyModule() {
const myModule = await import('./myModule');
// ... use myModule
}
loadMyModule();
async function loadMyModule(pathToModule) {
const myModule = await import(pathToModule);
// ... use myModule
}
loadMyModule('./myModule');
2.导入组件
2.1 导入命名组件
// namedConcat.js
export const concat = (paramA, paramB) => paramA + paramB;
async function loadMyModule() {
const { concat } = await import('./namedConcat');
concat('b', 'c'); // => 'bc'
}
loadMyModule();
2.2 默认导出
// defaultConcat.js
export default (paramA, paramB) => paramA + paramB;
async function loadMyModule() {
const { default: defaultImport } = await import('./defaultConcat');
defaultImport('b', 'c'); // => 'bc'
}
loadMyModule();
2.3导入混合形式
async function loadMyModule() {
const {
default: defaultImport,
namedExport1,
namedExport2
} = await import('./mixedExportModule');
// ...
}
loadMyModule();
3.何时使用动态导入
async function execBigModule(condition) {
if (condition) {
const { funcA } = await import('./bigModuleA');
funcA();
} else {
const { funcB } = await import('./bigModuleB');
funcB();
}
}
execBigModule(true);
总结
当调用 import(pathToModule) 作为一个函数时,其参数表示一个模块的指定符(又称路径),那么就会动态加载该模块。


关注公众号:拾黑(shiheibook)了解更多
赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 浙江移动携手烽火通信完成SPN动态节能部署,助力低碳、智能的精品网络建设
- 烽火通信牵头的国家级项目通过验收,加速推进50G PON技术成熟与商用
- 经销商生命周期管理,GrapeCity 三个维度搞定!
- 中国广电5G或于9月27日正式商用,还可办理6折合约套餐,你入网吗?
- 切片分组网SPN算力网络新突破——中国移动研究院、中国移动浙江公司联合烽火通信率先完成算网SPN现网试点
- “抄”iOS?Windows 11的这个新功能看着眼熟
- 1分钟看懂 iOS 15.1到底更新了啥?
- 网易云音乐加入鸿蒙生态,首次实现音乐播放跨设备无缝流转
- 华为站点数字孪生及T-BIM标准的前世今生
- 视频会议成常态,信创平台新蓝海
- 华为再次发债40亿,国内总规模将达230亿;腾讯发布首个全自研四足机器人;索尼宣布关闭巴西工厂 | Do晚报
- 威马汽车与Enel X签署战略合作协议,明年1季度出口东南亚;世卫组织:全球新冠肺炎确诊病例超7602万例|Do早报
赞助链接



微信扫码关注公众号