gpt4 book ai didi

javascript - 如何制作动态 ES6 模块?

转载 作者:行者123 更新时间:2023-11-29 19:06:17 25 4
gpt4 key购买 nike

我想使用一个函数生成一个普通对象,该对象将从 ES6 模块导出(在 Node 中运行之前使用 Babel 转换我的代码)


下面的模块是我想要做的......

module_a

function generatePlainObject(param1, param2, param3) {
return {
newProp1: param1,
newProp2: param2,
newProp3: param3,
};
}

export generatePlainObject(1, 2, 3);

...所以我可以在另一个模块中使用 import { newProp1, newProp2, newProp3 } from 'module_a',并轻松访问属性。

但这具体会引发错误(意外标记)。

我试过使用扩展运算符 (...),并使用 Object.assign({}, funcResults) 并将其存储在 中const 导出之前,但它们都弹出错误。


这可能吗?我是否误解了我可以导出什么样的对象?我是否必须显式键入普通对象并包含其属性?

感谢任何帮助。

最佳答案

根据规范,ES6 模块必须静态可分析。这意味着它们不能在运行时生成。这允许进行很多不错的优化,例如 tree shaking .

如果你真的想这样做,你可以像这样使用 CommonJS 模块......

module.exports = generatePlainObject(1, 2, 3);

然后像这样导入...

import { newProp1, newProp2 } from './otherFile';

另一种选择是导出为默认值,然后像这样导入整个对象...

export default generatePlainObject(1, 2, 3);

然后像这样导入...

import theWholeObj from './otherFile';
console.log(theWholeObj.newProp1);

这两种方法都不可静态分析,因此无法进行 tree shaking。这意味着无论何时您导入 newProp1,您也将导入 newProp2newProp3,无论您是否使用它们。

关于javascript - 如何制作动态 ES6 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42569696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com