![](/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.