检测ES2015代码是由babel编译的还是本机运行的
Detect if ES2015 code was transpiled by babel or is running native?
由于babel操作的某些限制,我需要编写工作区代码,以使我的项目的一部分在被它翻译时正确工作。我想使这段代码有条件,所以它只运行,如果它已经被babel翻译(因为它是不必要的在本地ES6环境)。有什么办法可以做到吗?
From Babel plugins docs:
现在,开箱即用的Babel不做任何事情。它基本上像
const babel = code => code;
一样解析代码,然后再次生成相同的代码。
所以通常你不能检测代码是否被Babel编译,因为没有任何插件,它是无操作的。但是,你可以通过一些插件或预设来检测代码是否被Babel转换过。
既然你正在谈论编译ES2015代码,我假设你正在使用es2015
预设。例如,这个预设编译ES2015类。因为你可以很容易地检测到某些东西是否是ES2015原生类,所以你可以检查代码是否被Babel转换过。
例如,下面的代码片段在现代浏览器中应该输出false
:
const isBabel = !(class {}.toString().indexOf('class ') === 0);
console.log(isBabel);
而这一个输出true
(我检查了"使用BabelJS/ES2015"选项在代码片段选项):
const isBabel = !(class {}.toString().indexOf('class ') === 0);
console.log(isBabel);
相关文章:
- '图片'没有用于本机道具的propType'RCTImageView.overlayColor&
- 在iOS和Android上使用React native时,我还能使用本机第三方lirbraries吗
- javascript函数访问ios本机功能
- 如何在从客户端接收数据时从本机方法触发javascript函数?
- 在浏览器中检测本机或第三方PDF插件
- 将事件发送到javascript文档的react本机模块是否正确
- 将对应用内购买的支持构建为react本机代码
- 如何在Windows上用javascript构建本机应用程序
- 在视图中渲染多个按钮以编程方式进行本机反应
- 在本机挂钩之前加载可安装挂钩
- 如何使用UI Automation JavaScript Reference for iOS appium获取本机应用程
- 控制台中的“function floor(){[本机代码]}”是什么
- 如何将chrome.tabCapture流从js传递到c++PNACL本机代码
- WKWebview-Javascript和;本机代码
- 在Phonegap(Java Android)中运行本机代码
- array.forEach比本机迭代运行得更快?怎样
- 扩展本机函数以在函数调用时运行代码
- 检测ES2015代码是由babel编译的还是本机运行的
- 从浏览器运行本机java应用程序
- Google Web 工具包运行时错误:方法中缺少非本机或抽象方法中的“代码”属性