Modul CommonJS: require & module.exports

Memecah program menjadi berkas-berkas modul dan memakai require, module.exports, dan cache modul.

Part 3 dari 24 ± 30 menit Gratis

Kenapa modul?

Satu berkas berisi ribuan baris cepat menjadi mimpi buruk. Modul memecah program menjadi berkas-berkas kecil dengan tugas jelas: database.js, pajak.js, pengguna.js. Tiap berkas punya ruang lingkup sendiri — variabel di dalamnya tidak bocor ke berkas lain kecuali kamu ekspor.

CommonJS: sistem modul klasik Node

Setiap berkas .js adalah modul. Dua alat utamanya:

  • module.exports — apa yang dibagikan modul ini ke luar.
  • require('...') — mengambil ekspor modul lain.
// hitung.js
function tambah(a, b) { return a + b; }
function kali(a, b) { return a * b; }
module.exports = { tambah, kali };
// main.js
const { tambah, kali } = require('./hitung');
console.log(tambah(2, 3));   // 5
console.log(kali(4, 5));     // 20

Aturan jalur require

BentukArti
require('./hitung')Berkas lokal (awalan ./ atau ../); .js boleh dihilangkan
require('fs')Modul bawaan Node
require('express')Paket dari node_modules (hasil npm install)

Berbagai cara mengekspor

// 1. Banyak anggota
module.exports = { tambah, kali };

// 2. Menambah satu per satu
exports.tambah = (a, b) => a + b;
exports.kali = (a, b) => a * b;

// 3. Satu hal utama (mis. sebuah class)
module.exports = class Keranjang { /* ... */ };

Jebakan: exports hanyalah pintasan ke module.exports. Menimpanya dengan exports = {...} tidak berpengaruh. Untuk mengganti seluruh ekspor, selalu gunakan module.exports = ....

Modul dieksekusi sekali (cache)

Saat pertama di-require, kode modul dijalankan dan hasil ekspornya disimpan di cache. require berikutnya dari berkas mana pun mengembalikan objek yang sama — kode modul tidak dijalankan ulang. Itulah mengapa modul bisa dipakai sebagai "singleton" (mis. koneksi database tunggal).

Variabel khusus per modul

  • __filename — path lengkap berkas ini.
  • __dirname — folder berkas ini (andalan untuk menyusun path berkas lain).
  • module, exports, require.

Tips struktur

  • Satu modul = satu tanggung jawab.
  • Ekspor sesedikit mungkin; sembunyikan detail internal.
  • Hindari ketergantungan melingkar (A butuh B, B butuh A) — hasilnya ekspor setengah jadi.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X