使用 Babel 6,我正在尝试 不是 拥有"use strict"
在我编译的代码中。
我发现它是 "transform-es2015-modules-commonjs" plugin (在 "es2015" preset 中)这是添加它的原因。
在 the source-code似乎 inherit "babel-plugin-transform-strict-mode"
,如果我删除它,它仍然可以正常工作,即它编译 import "…"
进入 require(…)
不添加“使用严格”。
那么为什么“transform-es2015-modules-commonjs”力 严格模式?
最佳答案
在 ES6 规范中,有两种模式可以处理文件:
不允许使用 ES6 模块语法,并且出于向后兼容的原因,内容仅在具有
"use strict";
前缀指令时才被视为严格的。 .允许使用 ES6 模块语法,并且所有代码在所有情况下都自动成为严格模式。
因为 ES6 模块语法与某个东西是模块还是脚本有关,如果某个东西是“模块”,它会自动变得严格,Babel 使用
transform-es2015-modules-commonjs
的存在。同时启用这两种转换。即使您只启用模块转换本身并排除严格模式,您编写的所有代码在技术上都是无效的,并且一旦您尝试在真实的 ES6 模块环境中使用您的 ES6 代码,您是否喜欢它都会很严格或不。
如果您不希望您的代码过于严格,我建议禁用
transform-es2015-modules-commonjs
转换和使用 CommonJS 模块,因为它们没有这样的严格模式要求。
关于babeljs - 为什么 "transform-es2015-modules-commonjs"在 Babel 6 中要加上 "use strict"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34366875/