登录
首页 >  文章 >  前端

一行代码导入多个JS函数方法

时间:2026-02-13 08:27:47 461浏览 收藏

学习文章要努力,但是不要急!今天的这篇文章《一行代码动态导入多个JS函数》将会介绍到等等知识点,如果你想深入学习文章,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

JavaScript 动态导入:一行代码解构多个导出函数

本文介绍如何使用 `await import()` 语法在单行中解构导入同一模块的多个命名导出函数,避免重复调用 `import()`,提升代码简洁性与执行效率。

在 ES 模块环境中,import() 是一个返回 Promise 的动态导入函数,适用于按需加载、条件导入或在非模块(如传统 CommonJS)上下文中使用现代模块。但需注意:import() 返回的是 Promise,因此必须配合 await(在 async 函数中)或 .then() 使用

要一次性导入并解构多个命名导出(如 del 包中的 deleteAsync、deleteSync 等),推荐写法如下:

// ✅ 正确:一行解构,一次导入,多次复用
const { deleteAsync: del, deleteSync: delSync } = await import('del');

该写法等价于:

  • 动态加载 'del' 模块一次;
  • 解构其命名导出(注意:del 包默认导出为 undefined,所有功能均以命名导出形式提供,如 deleteAsync、deleteSync);
  • 并可同时重命名(如 deleteAsync: del),保持调用习惯一致。

⚠️ 注意事项:

  • await import(...) 只能在 async 函数或顶层模块(Top-Level Await)中使用。若在普通 CommonJS gulpfile.js(无 type: "module")中运行,需确保 Node.js 版本 ≥ 14.8 且启用 --experimental-top-level-await,或将其包裹在 async 函数中调用;
  • 不可直接在同步上下文中(如普通 require 式 gulpfile)使用 await,否则会报错 SyntaxError: await is only valid in async function;此时应改用链式 .then(),但无法单行解构多个函数——必须分别提取:
// ⚠️ 兼容旧环境的替代方案(不推荐重复导入)
let delMod;
import('del').then(mod => {
  delMod = mod;
});
// 后续使用:delMod.deleteAsync(...) / delMod.deleteSync(...)

✅ 最佳实践建议:
将 gulp 配置升级为 ESM(设置 "type": "module" + .mjs 后缀或 package.json 中声明),即可自然使用顶层 await 和解构导入,代码更清晰、性能更优(模块仅加载一次):

// gulpfile.mjs
export async function clean() {
  const { deleteAsync: del, deleteSync: delSync } = await import('del');
  await del(['dist/**']);
  delSync(['temp/**']);
}

总结:一行解构多个函数完全可行,核心是 await import() + 对象解构;关键在于运行环境支持 Top-Level Await 或合理嵌套在 async 上下文中,而非重复调用 import()。

今天关于《一行代码导入多个JS函数方法》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>