You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需单独或对象导入,直接按原标识符导入JS模块所有函数?

如何直接导入模块内所有命名导出的函数?

嘿,我来给你梳理下这个问题的解决思路~

首先先明确下你的场景:你在utils/mathlib.js里用命名导出的方式定义了两个函数:

// utils/mathlib.js
export function add(x, y) { return x + y; }
export function subtract(x, y) { return x - y; }

在main.js里,默认导入import add from "./../utils/mathlib";没法生效(改成默认导出才行),但命名导入import { add } from "./../utils/mathlib";或者整体导入import * as MathLib from "./../utils/mathlib";都能正常工作。你想要的是不用单独导入每个函数,也不用通过模块对象访问,直接用原标识符调用所有导出的函数,对吧?

可行的解决方案

ES模块规范里并没有直接import { * }这种通配符解构导入的语法,但我们可以通过「整体导入模块对象 + 解构赋值」的方式实现需求:

// main.js
// 先整体导入整个模块对象
import * as MathLib from "./../utils/mathlib";
// 把模块对象里的所有导出成员解构到当前作用域
const { add, subtract } = MathLib;

// 现在就能直接用原标识符调用函数啦
console.log(add(2, 3)); // 输出 5
console.log(subtract(10, 4)); // 输出 6

这种方式的好处是:

  • 不用逐个列出要导入的函数名,一次性解构所有导出成员
  • 解构后可以直接用add、subtract这些原名称调用,不用再写MathLib.add这种前缀

补充说明

为什么默认导入会失效?因为你的mathlib.js里只做了命名导出,没有定义export default的默认成员,所以默认导入自然无法获取到有效值。如果想要默认导入生效,你需要在mathlib.js里加上默认导出,比如:

// utils/mathlib.js
export function add(x, y) { return x + y; }
export function subtract(x, y) { return x - y; }
// 添加默认导出
export default { add, subtract };

但这其实和你想要的直接用原标识符的需求不符,所以还是推荐前面的「整体导入+解构」方案。

内容的提问来源于stack exchange,提问作者Ember Freak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:12:15