【发布时间】:2020-03-12 13:08:38
【问题描述】:
我编写了一个小的 ES6 模块,现在需要将它集成到必须支持 IE11 的项目中。项目的其余部分是用 ES5 编写的,理想情况下,我只想转译我的模块并将其作为脚本导入项目的 HTML 中,并将其导出的值附加到 window 对象。
我已经为 babel 尝试了一些不同的配置,但它们似乎都旨在转换完整的代码包或需要将 polyfill 导入原始模块(目前没有依赖项),但似乎没有任何东西与IE11。
模块结构:
const MyModule = (() => {
const moduleStuff = {}
function moduleLogic(params) {
doStuff(params)
}
return {
init: initParams => doStuff(initParams),
moduleMethod: moduleData => {
doStuff(moduleMethod)
}
}
})();
export default MyModule;
【问题讨论】:
-
你在 6:4 中有一个大括号你应该去掉,然后 Babel 会编译。
-
你在使用 webpack 吗?如果是这样,那么您想要的字段是
output.library和output.libraryTargetwebpack.js.org/configuration/output/#outputlibrarytarget -
Babel 应该可以很好地转译单个文件。你选择了什么目标模块格式?
-
正如Federico所说,moduleLogic函数后面多了一个大括号,去掉后,我们可以使用Babel编译代码,
-
抱歉打错字了,我会编辑我的问题,它不在原始代码中,只是在我为了本示例的目的而使其通用时发生。代码转换得很好,问题更多在于让它以一种可以轻松包含在更大项目中的方式进行转换。我尝试了几个 AMD、UMD、CommonJS 等的转换插件,但它们似乎都缺少一些导致代码抛出错误的功能(缺少
require或exports变量或其他一些函数)。
标签: javascript internet-explorer-11 babeljs es6-modules