Setelah memahami cara kerja runtime-nya, pertanyaan praktis berikutnya adalah: untuk apa saja Node.js dipakai di dunia nyata? Jawabannya jauh lebih luas daripada sekadar “server web”. Node.js menopang API backend, layanan realtime, alat command line, hingga tooling yang kita pakai sehari-hari sebagai pengembang — dan seluruh kegunaan itu dipercepat oleh ekosistem package npm yang memuat lebih dari dua juta package. Chapter ini memetakan ragam kegunaan Node.js, lalu memperkenalkan cara kerja ekosistem npm secara ringkas.

Ragam Kegunaan Node.js #

KategoriContoh penggunaan
API dan server webREST API, GraphQL API, microservice — umumnya dengan framework seperti Express atau Fastify
Aplikasi realtimeChat, notifikasi, dan kolaborasi dokumen berbasis WebSocket
Alat CLIGenerator proyek, alat otomasi, dan perkakas internal tim
Tooling pengembanganLinter, formatter, test runner, dan bundler — ESLint, Prettier, dan Vitest semuanya berjalan di atas Node.js
Skrip dan otomasiPengganti skrip shell: membaca laporan, mengolah berkas, memanggil API internal
Aplikasi desktopAplikasi berbasis web yang dibundel dengan framework seperti Electron
Rendering di serverFramework fullstack seperti Next.js memakai Node.js untuk merender halaman sebelum dikirim ke browser

Benang merah dari semua kategori tersebut adalah profil beban yang sama: banyak operasi I/O — permintaan jaringan, pembacaan berkas, koneksi database — dengan sedikit komputasi berat di antaranya. Model non-blocking yang kita pelajari pada Chapter Bagaimana Node.js Bekerja membuat satu proses Node.js mampu melayani ribuan permintaan I/O tersebut secara bersamaan.

Node.js sebagai Alat Skrip #

Kegunaan yang paling cepat kita rasakan adalah skrip: otomasi kecil yang biasanya ditulis dengan shell script, tetapi jauh lebih nyaman ditulis dengan JavaScript lengkap dengan function, array method, dan async/await. Program berikut membaca berkas CSV berisi daftar tugas, lalu mencetak rekapnya ke terminal:

js
import { readFile } from "node:fs/promises";

const isi = await readFile("tugas.csv", "utf8");
const barisData = isi.trim().split("\n").slice(1);
const hitung = { selesai: 0, belum: 0 };

for (const baris of barisData) {
  const [judul, status] = baris.split(",");
  hitung[status] += 1;
  console.log(`- [${status}] ${judul}`);
}

console.log(`Ringkasan: ${hitung.selesai} selesai, ${hitung.belum} belum`);

Output yang Dihasilkan:

text
- [selesai] Menyiapkan sketsa API
- [selesai] Menulis dokumentasi endpoint
- [belum] Menguji endpoint daftar tugas
- [belum] Menyiapkan data uji
Ringkasan: 2 selesai, 2 belum

Mari kita telaah baris-baris kode di atas:

  1. Baris 1 (import ... from "node:fs/promises"): core module fs versi promise diimpor. Prefix node: adalah konvensi Course ini untuk menandai API bawaan Node.js.
  2. Baris 3 (await readFile(...)): berkas tugas.csv dibaca secara asynchronous di top-level module — ES Modules mengizinkan await pada level teratas tanpa pembungkus function.
  3. Baris 4 (.trim().split("\n").slice(1)): teks dibersihkan, dipecah per baris, lalu baris pertama (header judul,status) dibuang karena bukan data.
  4. Baris 5-11 (perulangan): tiap baris dipecah berdasarkan koma, status dihitung ke object hitung, dan daftar tugas dicetak satu per satu.
  5. Baris 13: rekap akhir dicetak — hasil agregasi sederhana yang di shell script murni akan membutuhkan awk atau grep dengan sintaks jauh lebih sulit dibaca.

Dengan bekal pola ini, kita bisa membangun otomasi apa pun: menggabungkan laporan mingguan, mengubah format puluhan berkas, sampai memanggil API internal tiap pagi. Materi CLI yang lebih lengkap menanti pada Section Command-Line Applications.

Ekosistem npm #

Kegunaan Node.js bertambah besar berkat npm, package manager bawaan Node.js. Registry npm menyimpan lebih dari dua juta package publik — dari framework server besar sampai utility satu function — dan npm CLI terbundel otomatis bersama penginstal Node.js. Alur kerjanya sederhana: sebuah proyek Node.js menyimpan metadata dan daftar dependency di berkas package.json, lalu satu perintah memasang semuanya:

bash
npm install express

Perintah di atas (dijalankan di folder proyek kita sendiri) mengunduh package Express beserta dependency-nya ke folder node_modules, lalu mencatatnya ke package.json. Berikut contoh isi package.json yang dihasilkan:

json package.json
{
  "name": "layanan-tugas",
  "version": "1.0.0",
  "type": "module",
  "dependencies": {
    "express": "^5.3.0"
  }
}

Nilai "^5.3.0" adalah rentang versi semver: terima versi 5.3.0 ke atas selama masih dalam garis major 5. Aturan angka major-minor-patch ini diatur oleh spesifikasi Semantic Versioning dan menentukan kapan sebuah package boleh berubah perilaku — mekanisme penting yang kita bedah lagi pada Chapter berikutnya.

Pengenalan resmi npm dari tim Node.js tersedia di panduan pengelolaan package , sedangkan gambaran umum penggunaan Node.js untuk server, alat, dan skrip dirangkum di pengantar Node.js .

Ekosistem sebesar ini bergerak cepat: package baru bermunculan setiap hari, dan Node.js sendiri merilis versi major setiap enam bulan. Agar tidak tertinggal dan tetap memilih versi yang tepat untuk produksi, kita perlu memahami siklus rilis Node.js — topik Chapter terakhir section ini.