BAB 4 – Memahami Sistem Module Node.js CommonJS & ES Module

BAB 4 – Memahami Sistem Module Node.js CommonJS & ES Module

Sistem Module di Node.js: Panduan Lengkap CommonJS dan ES Module

Pendahuluan

Dalam Node.js, module adalah mekanisme untuk memecah aplikasi menjadi bagian-bagian kecil yang terpisah ke dalam file berbeda. Setiap file JavaScript di Node.js secara otomatis diperlakukan sebagai satu module dengan ruang lingkup (scope) sendiri.

Artinya, variabel, fungsi, atau class yang didefinisikan di dalam satu file tidak bisa langsung diakses oleh file lain kecuali jika kita secara eksplisit mengekspornya. Konsep ini sangat penting karena membantu menjaga kode tetap terisolasi, aman, dan terstruktur.

Tanpa sistem module, aplikasi Node.js akan cepat berubah menjadi satu file besar yang sulit dibaca, sulit dirawat, dan rawan menimbulkan bug. Dengan module, setiap bagian kode memiliki tanggung jawab yang jelas dan mudah dikembangkan.


Apa Itu Module di Node.js?

Module di Node.js adalah unit kode mandiri yang memiliki scope sendiri. Module memungkinkan developer untuk:

  • membagi aplikasi menjadi bagian kecil
  • mengatur tanggung jawab kode
  • menggunakan kembali fungsi atau logika tertentu

Setiap file JavaScript secara default adalah sebuah module.


Mengapa Sistem Module Penting di Node.js?

Node.js banyak digunakan untuk aplikasi backend yang bersifat jangka panjang dan terus berkembang. Oleh karena itu, struktur kode menjadi faktor yang sangat penting.

Manfaat utama sistem module di Node.js antara lain:

  • memisahkan logika aplikasi
  • menghindari duplikasi kode
  • mempermudah debugging
  • memudahkan kolaborasi tim

Tanpa sistem module, aplikasi Node.js akan cepat sulit dirawat dan dikembangkan.


Satu File JavaScript Sama dengan Satu Module

Di Node.js, setiap file JavaScript adalah module yang berdiri sendiri. Variabel atau function di dalamnya tidak otomatis tersedia untuk file lain.

Contoh Module Sederhana

// greeting.js
function sayHello() {
  console.log("Halo dari module greeting");
}

Function sayHello tidak dapat digunakan di file lain sebelum diekspor.


Sistem Module di Node.js

Node.js mendukung dua sistem module utama:

  • CommonJS (CJS) – sistem module klasik Node.js
  • ES Module (ESM) – sistem module modern standar JavaScript

Keduanya memiliki cara kerja dan sintaks yang berbeda.


CommonJS di Node.js

Apa Itu CommonJS?

CommonJS adalah sistem module bawaan Node.js sejak awal. Hingga saat ini, CommonJS masih banyak digunakan pada proyek lama dan library tertentu.

Ciri-ciri CommonJS

  • menggunakan require() untuk import
  • menggunakan module.exports untuk export
  • tidak memerlukan konfigurasi tambahan
  • bersifat sinkron

Contoh Export Module CommonJS

// utils/math.js
function sum(a, b) {
  return a + b;
}

module.exports = { sum };

Contoh Import Module CommonJS

// index.js
const { sum } = require("./utils/math");

console.log(sum(5, 3));

Export Satu Fungsi dengan CommonJS

// utils/logger.js
function logger(message) {
  console.log(`[LOG] ${message}`);
}

module.exports = logger;
// index.js
const logger = require("./utils/logger");

logger("Aplikasi dijalankan");

ES Module (ESM) di Node.js

Apa Itu ES Module?

ES Module adalah standar resmi JavaScript yang digunakan di browser dan Node.js modern. Sistem ini direkomendasikan untuk proyek baru.

Cara Mengaktifkan ES Module

Tambahkan konfigurasi berikut ke file package.json:

{
  "type": "module"
}

Export dan Import dengan ES Module

Named Export pada ES Module

// utils/math.js
export function sum(a, b) {
  return a + b;
}
// index.js
import { sum } from "./utils/math.js";

console.log(sum(5, 3));

Aturan Penting ES Module

  • path file harus ditulis lengkap
  • ekstensi .js wajib digunakan
  • tidak bisa mencampur require dan import

Default Export pada ES Module

Default export digunakan ketika sebuah module hanya memiliki satu fungsi utama.

// utils/logger.js
export default function logger(message) {
  console.log(`[LOG] ${message}`);
}
import logger from "./utils/logger.js";

logger("Aplikasi dimulai");

Struktur Folder Module yang Disarankan

Struktur folder yang rapi akan mempermudah pengembangan aplikasi Node.js.

src/
├── index.js
├── services/
│   └── userService.js
├── utils/
│   └── logger.js
// services/userService.js
export function getUser() {
  return { id: 1, name: "Andi" };
}
// index.js
import { getUser } from "./services/userService.js";
import logger from "./utils/logger.js";

logger("Aplikasi dimulai");
console.log(getUser());

Kesalahan Umum dalam Menggunakan Module Node.js

Beberapa kesalahan yang sering terjadi:

  • mencampur CommonJS dan ES Module
  • lupa menuliskan ekstensi .js pada ES Module
  • membuat satu module terlalu besar

Prinsip Terbaik

Satu module, satu tanggung jawab


Contoh Praktik Memecah Logika Aplikasi

// services/messageService.js
export function getMessage() {
  return "Belajar Node.js itu menyenangkan";
}
// index.js
import { getMessage } from "./services/messageService.js";

console.log(getMessage());

Kesimpulan

Sistem module adalah fondasi utama dalam pengembangan aplikasi Node.js. Dengan memahami CommonJS dan ES Module, developer dapat:

  • menulis kode yang lebih rapi dan terstruktur
  • mempermudah perawatan aplikasi
  • mempersiapkan proyek untuk berkembang di masa depan

Untuk proyek baru, ES Module sangat direkomendasikan, sementara CommonJS tetap penting untuk memahami dan merawat proyek Node.js lama.