gpt4 book ai didi

ecmascript-6 - 我可以使用 `export` 将对象导出为 "` module.export`"

转载 作者:行者123 更新时间:2023-12-04 04:48:30 25 4
gpt4 key购买 nike

我想我要求的是不可能的OOB,但我想确认一下。

我们正在升级到 ES6(使用 Babel)。项目是一个网站,使用 AMD (requirejs)。我想将实用程序模块 (foolib) 转换为 ES6,但从 ES6(使用 import)或现有的 ES5/AMD 使用它模块。

// foolib.es6
export { // as expected, this doesn't work
method1: function () { ... },
value1: 123.456
};

// consumer1.es6
import foolib from "foolib";

// consumer2.js
define(["foolib"], function (foolib) {});

我明白解决方案是改变foolib.es6如下:

export function method1() { ... };
export let value1 = 123.456;

然而实际上从 foolib 返回的条目数量是荒谬的。所以我希望有一种方法可以导出现有的对象文字而无需重写每一行。

此外,我意识到这很可能是不可能的,因为 AMD 导入(使用 define)和 import 机制(稍后使用 exports 对象有值卡在它上面,包括 default 值,而前者期望返回单个值。

我认为可行的一个解决方案是将我的对象作为 defaultfoolib.es6 中导出,然后调整 requirejs 默认加载器以检查导入的值是否是一个esModule 并返回默认值:value && value.__esModule && value.default ||值(value)。这应该工作吗? (我仍然希望有更简单的解决方案)。

最佳答案

您用于导出对象的语法无效,因为您没有给对象命名,所以它不能是命名导出,并且您没有指定它是默认导出,所以它不能是默认导出。将其更改为默认导出:

// foolib.es6
export default {
method1: function () {},
value1: 123.456
}
// consumer.es6
import foolib from "foolib";

console.log(foolib.value) //=> 123.456

您可以使用 babel-plugin-add-module-exports Babel 插件将默认导出恢复为 Node-land 中 module.exports 的值。

正如您发现的那样,确保在任何其他 -modules- 插件之前包含此插件,例如 transform-es2015-modules-amd

关于ecmascript-6 - 我可以使用 `export` 将对象导出为 "` module.export`",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39294258/

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