2017-07-03 75 views
0

我明白,你可以檢測功能的JavaScript像這樣的東西檢測ES6進口兼容性

if(xmlhttprequest){ 
console.log("this browser is ajax compatible"); 
} 

我也明白,如果啓用了某些開發模式設置ES6進口與一些瀏覽器nativly compatable。即

import {someExport} from './someModule.js'; 

我的問題是

是否有可能以特色的,就像您的目標檢測「導入」? 如果有, 這怎麼辦? 是否有可能導入整個JS文件(以便可以導入不使用導出的ES5 Javascript)

我試圖使用具有各種變體的if(object)語法(包括帶和不帶from語句)但到目前爲止沒有運氣

我對這個我的原因我建立了一個JavaScript功能,它依靠Jquery和GreenSock,並希望腳本在兼容的瀏覽器中自動導入這些開發人員不必手動添加多個JS庫。

回答

0

不,這是不可能的。這是不可能的原因是因爲它會在不支持它的瀏覽器中引發語法錯誤,並且您無法正確反應語法錯誤。

相反,您應該使用類似WebpackBabel的東西來編譯您的代碼,該代碼將使用模塊的代碼轉換爲任何瀏覽器都可以運行的格式。

+0

我希望使用的WebPack /巴貝爾因爲不是每個開發人員都知道如何使用這些卵圓形。 我想我可以同時提供ES5和ES6版本 –

+0

@SamCoppock您可以或者只是在您的package.json文件中設置一個腳本,以便爲它們自動運行Webpack。這就是我在工作中所做的。 –

+0

是的,我可以這樣做 我應該還包括一個node.js的副本,以便他們不必安裝它? –

1

您是否考慮過在腳本上使用nomodule屬性?

<script type="module"> 
    window.imports = true; 
    import './app-shell-es.js'; 
</script> 

<script src="app-shell.js" nomodule></script> 

來源:ECMAScript modules in browsers