![](/img/trans.png)
[英]Inheritance in Babel transpiled ES2015 not working due to no class hoisting
[英]Detect if ES2015 code was transpiled by babel or is running native?
由于babel的操作受到某些限制,因此我需要编写变通方法代码,以使项目的一部分在被编译时能够正常工作。 我想将此代码设为条件代码,因此仅当它已被babel编译时才运行(因为在本机ES6环境中是不必要的)。 有什么办法吗?
来自Babel插件文档 :
现在,Babel不会执行任何操作。 它基本上就像
const babel = code => code;
通过解析代码,然后再次生成相同的代码。
因此,通常您无法检测到Babel是否已对代码进行了转译,因为没有任何插件,它是无操作的。 但是,您也许能够通过某些插件或预设来检测代码是否已被Babel转移。
由于您正在谈论转译ES2015代码,因此我假设您使用的是es2015
预设。 例如,此预设会转换ES2015类。 由于您可以轻松检测出某些东西是否是本机ES2015类 ,因此您可以检查Babel是否已转译了代码。
例如,现代浏览器中的以下代码片段应输出false
:
const isBabel = !(class {}.toString().indexOf('class ') === 0); console.log(isBabel);
尽管此输出为true
(我在代码片段选项中选中了“ Use BabelJS / ES2015”选项):
const isBabel = !(class {}.toString().indexOf('class ') === 0); console.log(isBabel);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.