2017-07-05 60 views
2

我感到困惑的是什麼,這些語句模塊標識符是指:模塊符在ES6進出口

export {bar} from "foo"; 

import {bar} from "foo"; 

是什麼"foo"指什麼?它不能是一個文件,因爲它會像"./foo"那樣。如果它不是文件,我認爲它是一個ID。如何定義ID?

我從js文件中導出,但是導入是Firefox瀏覽器中內嵌html腳本(type="module")的一部分。

瀏覽器版本(和瀏覽器設置)已驗證可與es6模塊一起使用。

在此先感謝。

回答

3

ES6沒有指定模塊說明符引用的內容。
確實只是一個標識符。而已。

由環境決定將這些標識符解析爲實際模塊。加載器可能會將它們解釋爲相對文件路徑,全局id,npm模塊名稱等等。

在瀏覽器中,<script type="module"> took some time to specify,但它終於來了。 "foo"模塊說明符當前無效,瀏覽器將忽略該模塊,因爲它不知道如何處理它。它需要一些解析爲要加載的URL。 Jake Archibald wrapped it up succinctly

「Bare」導入說明符當前不受支持。有效模塊 說明符必須符合以下條件之一:

  • 完整的非相對URL。如在中,當把 到new URL(moduleSpecifier)放在一起時不會引發錯誤。
  • 起始於/
  • ./開始。
  • ../開頭。

其他說明符保留供將來使用,如導入內置的 模塊。

+1

你有什麼提示,我怎麼能找出鉻加載器允許模塊說明符的「值」?對包含對導出對象的引用的對象的引用可能被用作模塊說明符似乎是合理的。 –