gpt4 book ai didi

babeljs - 为什么 "transform-es2015-modules-commonjs"在 Babel 6 中要加上 "use strict"?

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

使用 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 规范中,有两种模式可以处理文件:

  • 作为一个“脚本”,它通常是我们在标准 JS 环境中习惯的一切
    不允许使用 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/

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