当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《为什么"transform-es2015-modules-commonjs"在Babel6中添加"usestrict"?》经验,为你挑选了1个好方法。

使用巴贝尔6,我想不会"use strict"我的编译代码.

我发现它是"transform-es2015-modules-commonjs"插件(在"es2015"预设中),这就是添加它的内容.

它似乎在源代码中inherit "babel-plugin-transform-strict-mode",如果我删除它,它仍然可以正常工作,即它编译import "…"require(…)而不添加"使用严格".

那么为什么"transform-es2015-modules-commonjs" 强制严格模式?



1> loganfsmyth..:

在ES6规范中,有两种模式可以处理文件:

    作为一个"脚本",它通常是我们在标准JS环境中习惯的一切

    不允许使用ES6模块语法,并且出于向后兼容性原因,如果内容的前缀指令为,则仅将内容视为严格"use strict";.

    作为"模块"

    允许使用ES6模块语法,并且在所有情况下所有代码都是自动严格模式.

因为ES6模块语法与某个模块或脚本有关,并且如果某个东西是"模块"它是自动严格的,所以Babel使用其存在transform-es2015-modules-commonjs来同时启用这两个转换.

即使您只启用模块转换本身并排除严格模式,您编写的所有代码在技术上都是无效的,只要您尝试在真正的ES6模块环境中使用ES6代码,您是否喜欢它就会非常严格或不.

如果您不希望您的代码严格,我建议禁用transform-es2015-modules-commonjs转换并使用CommonJS模块,因为它们没有这样的严格模式要求.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有