この記事では、ESモジュール(ECMAScriptモジュール, JavaScriptモジュール)のimportとexportの使い方を紹介します。
Node.jsでESモジュールを使う方法は以下を参照ください。
1. 名前付きエクスポート(Named exports)
export.mjs
// 1.名前付きエクスポート // 宣言済みのオブジェクトを名前付きエクスポートする const foo = "foo"; export { foo }; // 宣言と同時に名前付きエクスポートする export const bar = "bar"; export function baz() { return "baz" } // 2.名前付きエクスポートのエイリアス // internalQux変数をquxとして名前付きエクスポートする const internalQux = "qux"; export { internalQux as qux };
import.mjs
// 名前付きエクスポートされたfoo,bar,baz,quxをインポートする import { foo, bar, baz, qux } from "./export.mjs"; console.log(foo); // => "foo" console.log(bar); // => "bar" console.log(baz()); // => "baz" console.log(qux); // => "qux" // fooとして名前付きエクスポートされた変数をmyFooとしてインポートする import { foo as myFoo } from "./export.mjs"; console.log(myFoo); // => "foo"
2. デフォルトエクスポート(Default exports)
export.mjs
// 1.デフォルトエクスポート const quux = { quux: "quux" } export default quux; // export { quux as default };と同じ
import.mjs
// デフォルトエクスポートをmyModuleとしてインポートする import myModule from "./export.mjs"; // import { default as myModule } from "./export.mjs";と同じ console.log(myModule); // => { quux: "quux" }
3. モジュールの集約(Aggregating modules)
modules/foo.mjs
export const ONE = 1, TWO = 2, TEN = 10;
modules/bar.mjs
export const plus = (n, m) => n + m; const times = (n, m) => n * m; export default times;
modules/baz.mjs
export const EINS = 1, ZWEI = 2, DREI = 3, VIER = 4, FUNF = 5;
modules/index.mjs
export * from "./foo.mjs"; export { plus as add, default as multiply } from "./bar.mjs"; export * as German from "./baz.mjs";
main.mjs
import { add, multiply, TWO, TEN, German } from "./modules/index.mjs"; console.log(add(5, TWO)); // => 7 console.log(multiply(4, TEN)); // => 40 console.log(multiply(German.FUNF, German.DREI)); // => 15
【参考】