[英]Javascript - Where are 'import' and 'export' statements legal?
我正在研究Javascript中的新import
, export
功能,但想知道,這些語句在語法上在哪里合法?
我了解類似以下內容的內容將不合法:
(function(){ import thing from './thing.js'; })();
但這是否意味着import
僅在模塊腳本的頂部合法? 還是在全球范圍內? 例如,如何處理:
import a from './a.js'; (function(){ // ... do something with a ... })(); import b from './b.js'; // ...
此外,此限制是否適用於export
? 例如,以下內容合法嗎?
(function(){ function internalFunc() { // ... } export { internalFunc }; })();
在規范的當前草案中,我似乎找不到任何相關信息。
javascript中沒有這樣的實現。 已經計划好了 但是還沒有瀏覽器實現它。 它已在Webpack和Babel等某些編譯器中實現。 NodeJ中也有要求。 但不是原生於javascript。 導入文件的其他方法是使用RequireJS庫。
參考: https : //developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Statements/import
編輯
回答您在評論中提出的問題:AFAIU在已經可用的導入和導出實現中,是的,它們可以在全球范圍內使用,並且可以導入和導出。 但是,在您的評論問題中,不是很清楚的是您的意思是“僅在全球范圍內可用”。 沒有這樣的封閉空間不能訪問全局空間。 全球空間無處不在,進出口也是如此。
我對規范的閱讀是:
模塊導出語句應位於模塊的頂層
模塊導入語句應位於模塊的頂層
在允許表達式的任何地方都可以使用函數樣式的模塊導入表達式(返回對導入項的承諾)
如您所說,目前僅在編譯器中受支持,因此我不確定現有的編譯器(Babel)是否遵循這些規則。
1)如果您只想使用import
, export
語句,則可以在Google chrome中使用它而無需任何轉譯(通過webpack);)
在進行一些研發時,我總是使用ES6模塊。 然后,只有當我的臨時工作值得時,我才開始考慮移植。
只是不要忘記以這種方式包括腳本:
<script type="module" src="index.js"></script>
2)如果你需要編寫一些腳本的NodeJS,然后打開一些實驗標志使用模塊- https://nodejs.org/api/esm.html#esm_enabling
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.