Modules — JavaScript

Coba bayangin nulis seluruh aplikasi WhatsApp di SATU file JavaScript raksasa. Logika chat, kontak, panggilan, pengaturan, notifikasi — semua jadi satu…

Module adalah satu file JavaScript yang membagikan sebagian isinya ke file lain. File pemilik fungsi menandainya dengan export, dan file yang butuh mengambilnya dengan import. Jadi kode besar bisa dipecah jadi file-file kecil yang masing-masing fokus ke satu hal.

🧪 Tebakan cepat: import add from './math.js', tanpa kurung kurawal, mengambil fungsi bernama add atau sesuatu yang lain? Tebak dulu, jawabannya ada di bagian "Export default: satu nilai utama".

Bagikan dengan export, ambil dengan import

// math.js
export const PI = 3.14

export function add(a, b) {
  return a + b
}

// app.js
import { add } from './math.js'

console.log(add(2, 3)) // 5

Butuh lebih dari satu? Pisahkan dengan koma: import { add, PI } from './math.js'.

Export default: satu nilai utama

// math.js
export default function multiply(a, b) {
  return a * b
}

// app.js
import kali from './math.js'

console.log(kali(2, 3)) // 6

Jawaban tebakan: import add from './math.js' mengambil export default, apa pun nama aslinya, bukan export bernama add. Kalau math.js cuma punya named export, import itu error, dan perbaikannya kurung kurawal: import { add } from './math.js'.

Ringkasnya: named export diimpor pakai { } dengan nama yang persis sama, default export diimpor tanpa { } dengan nama bebas.

Module di browser dan di latihan

<script type="module" src="app.js"></script>

import dan export cuma jalan di file yang dimuat sebagai module, yaitu lewat type="module". Editor latihan memperlakukan kodemu sebagai satu module: export jalan, dan pengecekannya membaca apa yang kamu export, sama seperti file lain yang meng-import-nya. Yang gak bisa cuma import dari file lain, karena latihannya cuma punya satu file: import { add } from './math.js' dijawab Cannot find module './math.js'.

⚠️ Jebakan yang sering ketemu

TL;DR: export membagikan nilai dari sebuah file, import mengambilnya di file lain. Named export (export function add) bisa banyak per file dan diimpor pakai kurung kurawal dengan nama persis: import { add } from './math.js'. Export default (export default ...) cuma satu per file dan diimpor tanpa kurung kurawal dengan nama bebas. Di browser, module dimuat lewat <script type="module">.

Yang akan kamu pelajari