メインコンテンツにスキップ
モジュール 8 · レッスン 1 / 4コース内の 29/32~12 min
モジュールのレッスン (1/4)

ESMモジュール:インポート/エクスポート

プログラムが大きくなると、すべてを 1 つのファイルに保存するのが面倒になります。最新の JavaScript ES モジュール (ESM) の問題を解決します。各ファイルは エクスポートできるモジュールです 関数、定数、クラス、その他のファイルはインポートできます。

export

公開したいものをエクスポートします。 2 つの形式:

JS
// somma.js
export function somma(a, b) {
  return a + b;
}

export const PI = 3.14159;

または、ファイルの最後に次のように記述します。

JS
function somma(a, b) {
  return a + b;
}
const PI = 3.14159;
export { somma, PI };

import

別のファイルから:

JS
// app.js
import { somma, PI } from './somma.js';

console.log(somma(1, 2)); // 3
console.log(PI); // 3.14159

オブジェクト { somma, PI } は、インポートする 名前のリスト です。それらは一致する必要があります エクスポートされた名前。

デフォルトのエクスポート

各モジュールには、名前のない 1 つの「メイン」エクスポートを含めることができます。

JS
// log.js
export default function log(msg) {
  console.log('[app]', msg);
}

ローカルで名前を選択してインポートします。

JS
import log from './log.js';
log('ciao');

名前の変更

JS
import { somma as plus } from './somma.js';
export { somma as add } from './somma.js'; // re-export

ファイルごとに 1 つの「名前空間」

モジュールは分離されています。ファイル内で宣言された変数はグローバル スコープには入りません。あなた 他の場所で見えるようにするには、明示的にエクスポートする必要があります。これは大幅な改善です すべての <script> が window を共有する昔ながらの JS。

試してみてください

以下の演習では、実際の import/export 構文は作成しません。サンドボックスは単一です。 ファイル。代わりに、コードを 小さな個別の関数に編成するようお願いします。 それぞれが別のファイルにある場合と同様に、共同作業を行うことができます。

運動#js.m8.l1.e1
試行回数: 0読み込み中…

2 つの別々の関数を定義します: `square(n)` (n*n を返す) と、square を使用する `sumOfSquares(a, b)` です。 square はファイルから「エクスポート」され、sumOfSquares によって再利用されるものと考えてください。

エディターを読み込み中…
ヒントを表示

sumOfSquares(a,b) = 平方(a) + 平方(b)

3 回の試行後に解決策が利用可能になります

復習演習

運動#js.m8.l1.e2
試行回数: 0読み込み中…

`isEven(n)` (n が偶数の場合は true) と、isEven を使用して配列内の偶数の要素をカウントする `countEven(arr)` を定義します。これらを 2 つの別個の関数として保持してください。

エディターを読み込み中…
ヒントを表示

arr.filter(isEven).length

3 回の試行後に解決策が利用可能になります