web-dev-qa-db-ja.com

es6インポートおよびエクスポートのモジュール指定子

これらのステートメントのモジュール指定子が何を参照しているかについて混乱しています。

export {bar} from "foo";

import {bar} from "foo";

"foo"は何を指しますか? "./foo"のようなものになるため、ファイルにすることはできません。ファイルでない場合は、IDだと思います。 IDはどのように定義されていますか?

Jsファイルからエクスポートしていますが、インポートはFirefoxブラウザーのインラインhtmlスクリプト(type="module")の一部になります。

ブラウザのバージョン(およびブラウザの設定)は、es6モジュールで動作することが確認されています。

前もって感謝します。

10
Fred Finkle

ES6は、モジュール指定子が何を参照するかを指定しません。
それは確かにそれだけです:識別子。これ以上何もない。

これらの識別子を実際のモジュールに解決するのは環境に任されています。ローダーは、それらを相対ファイルパス、グローバルID、npmモジュール名などとして解釈する場合があります。

ブラウザでは、 _<script type="module">_の指定に時間がかかりました ですが、ついに登場しました。 _"foo"_のモジュール指定子は現在無効です。ブラウザはそのモジュールをどう処理するかわからないため、そのモジュールを無視します。ロードするには、URLに解決されるものが必要になります。ジェイクアーチボルド 簡潔にまとめた

「ベア」インポート指定子は現在サポートされていません。有効なモジュール指定子は、次のいずれかに一致する必要があります。

  • 完全な非相対URL。のように、new URL(moduleSpecifier)を通過してもエラーはスローされません。
  • _/_で始まります。
  • _./_で始まります。
  • _../_で始まります。

その他の指定子は、組み込みモジュールのインポートなど、将来の使用のために予約されています。

18
Bergi