1. Pengenalan ES Modules
ES Modules (ESM) adalah sistem modul resmi yang diperkenalkan dalam spesifikasi ECMAScript 2015 (ES6). ESM memungkinkan Anda memecah kode JavaScript menjadi file-file terpisah yang saling terhubung melalui mekanisme import dan export. Ini adalah standar modern yang didukung oleh semua browser utama dan Node.js.
Sebelum ESM, JavaScript tidak memiliki sistem modul bawaan di browser. Pengembang mengandalkan pola seperti IIFE (Immediately Invoked Function Expressions), CommonJS (Node.js), atau AMD (RequireJS). ESM menyatukan semuanya menjadi standar yang konsisten.
Mengapa ES Modules Penting?
| Keunggulan | Penjelasan |
|---|---|
| Modularitas | Kode terorganisir dalam file terpisah, mudah dikelola dan dipelihara |
| Encapsulation | Setiap modul memiliki scope sendiri, variabel tidak bocor ke global |
| Tree Shaking | Bundler bisa menghapus kode yang tidak digunakan untuk mengurangi ukuran bundle |
| Static Analysis | Struktur import/export bisa dianalisis saat compile time |
| Browser Native | Didukung langsung oleh browser modern tanpa perlu bundler |
| Async Loading | Dynamic import memungkinkan lazy loading modul secara asynchronous |
ES Modules vs CommonJS vs AMD
| Aspek | ES Modules | CommonJS | AMD |
|---|---|---|---|
| Sintaks | import/export | require/module.exports | define/require |
| Loading | Static & Async | Synchronous | Asynchronous |
| Environment | Browser & Node.js | Node.js (server) | Browser |
| Tree Shaking | ✅ Ya | ❌ Tidak | ❌ Tidak |
| Top-level Await | ✅ Ya | ❌ Tidak | ❌ Tidak |
| Strict Mode | Otomatis | Manual | Manual |
Setup Awal
Untuk menggunakan ES Modules di browser, tambahkan atribut type="module" pada tag script di HTML: