Lompati ke konten utama
Modul 8 · Pelajaran 1 dari 429/32 dalam kursus~12 min
Pelajaran modul (1/4)

Modul ESM: impor / ekspor

Ketika sebuah program berkembang, menyimpan semuanya dalam satu file menjadi canggung. JavaScript modern memecahkan masalah dengan modul ES (ESM): setiap file adalah modul yang dapat diekspor fungsi, konstanta, kelas, dan file lain dapat mengimpornya.

export

Anda mengekspor apa yang ingin Anda publikasikan. Dua bentuk:

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

export const PI = 3.14159;

Atau, di akhir file:

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

import

Dari file lain:

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

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

Objek { somma, PI } adalah daftar nama yang ingin Anda impor. Mereka harus cocok dengan nama yang diekspor.

Ekspor bawaan

Setiap modul dapat memiliki satu ekspor "utama", tanpa nama:

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

Anda mengimpornya dengan memilih nama secara lokal:

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

Mengganti nama

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

Satu "namespace" per file

Modul terisolasi: variabel yang dideklarasikan dalam file tidak masuk dalam cakupan global. kamu harus mengekspornya secara eksplisit agar terlihat di tempat lain. Ini merupakan kemajuan besar JS jadul tempat setiap <script> berbagi window.

Cobalah

Dalam latihan di bawah ini Anda tidak akan menulis sintaks import/export yang sebenarnya — sandboxnya adalah satu mengajukan. Sebagai gantinya, kami akan meminta Anda untuk mengatur kode menjadi fungsi kecil yang terpisah itu berkolaborasi, seperti yang Anda lakukan jika masing-masing berada dalam file berbeda.

Latihan#js.m8.l1.e1
Upaya: 0Memuat…

Tentukan dua fungsi terpisah: `square(n)` (mengembalikan n*n) dan `sumOfSquares(a, b)` yang menggunakan persegi. Bayangkan square sebagai 'diekspor' dari file dan digunakan kembali oleh sumOfSquares.

Memuat editor…
Tunjukkan petunjuk

jumlahSquares(a,b) = persegi(a) + persegi(b)

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#js.m8.l1.e2
Upaya: 0Memuat…

Tentukan `isEven(n)` (benar jika n genap) dan `countEven(arr)` yang menggunakan isEven untuk menghitung elemen genap dalam array. Jadikan keduanya sebagai dua fungsi terpisah.

Memuat editor…
Tunjukkan petunjuk

arr.filter(genap).panjang

Solusi tersedia setelah 3 upaya