Materi
Program yang besar dipecah menjadi berkas-berkas modul. Setiap modul punya ruang nama sendiri: variabel di satu berkas tidak terlihat di berkas lain kecuali diekspor dengan export, lalu diambil dengan import. Modul otomatis berjalan dalam strict mode. Di halaman web, berkas yang memakai import dimuat dengan <script type="module">; tanpa atribut itu, pernyataan import ditolak dengan SyntaxError.
Ada dua jenis ekspor. Ekspor bernama bisa lebih dari satu per modul dan diambil dengan kurung kurawal memakai nama yang sama, misalnya import { hitungOngkir, TARIF } from "./ongkir.js". Ekspor default hanya boleh satu per modul, diambil tanpa kurung kurawal, dan nama penerimanya bebas. Keduanya bisa diambil dalam satu baris: import hitung, { TARIF } from "./ongkir.js". Kata as mengganti nama, dan import * as ongkir mengumpulkan semua ekspor bernama dalam satu objek.
// ongkir.js
export const TARIF = 9000;
export function perKilo(berat) {
return Math.ceil(berat) * TARIF;
}
export default function gratis(total) {
return total >= 150000;
}
// kasir.js
import gratis, { perKilo as ongkirKilo } from "./ongkir.js";
import * as ongkir from "./ongkir.js";
ongkirKilo(1.2); // 18000
ongkir.TARIF; // 9000Nilai yang diimpor adalah ikatan hidup yang hanya bisa dibaca: bila modul asal mengubah nilainya, pengimpor ikut melihat perubahan itu, tetapi pengimpor sendiri tidak boleh mengisi ulang nama tersebut.