Selama lebih dari satu dekade, JavaScript hidup terkurung di dalam browser: bahasa ini hanya bisa berjalan ketika ada halaman web yang memuatnya. Node.js meruntuhkan batas tersebut. Node.js adalah runtime yang memungkinkan kita menjalankan JavaScript di mana saja — di server, di terminal, hingga di perangkat kecil — tanpa perlu browser sama sekali. Pada Chapter ini kita akan mengenal definisi Node.js, karakteristik utamanya, dan alasan runtime ini menjadi fondasi banyak aplikasi modern.

Definisi Singkat #

Node.js adalah runtime environment open-source untuk JavaScript yang dibangun di atas mesin V8 buatan Google. Istilah runtime merujuk pada program yang bertugas membaca kode JavaScript lalu menjalankannya; pada browser, peran runtime ini diisi oleh kombinasi V8 dan berbagai API halaman web, sedangkan pada Node.js peran tersebut diisi oleh V8 ditambah pustaka sistem seperti libuv untuk I/O asynchronous. Node.js pertama kali diperkenalkan oleh Ryan Dahl pada tahun 2009 dengan satu ide kunci: memakai model event-driven dan non-blocking I/O sehingga satu proses dapat melayani sangat banyak koneksi sekaligus.

Kata kunci non-blocking I/O akan kita bedah tuntas pada Section Asynchronous Runtime. Untuk sekarang, cukup bayangkan seorang pelayan kafe yang tidak berdiri menunggu satu pesanan selesai diseduh sebelum menerima pesanan berikutnya; pelayan tersebut mencatat pesanan, mengerjakan yang lain, lalu kembali ketika kopi sudah siap. Node.js bekerja dengan cara serupa terhadap operasi baca berkas dan koneksi jaringan.

JavaScript Keluar dari Browser #

Bukti paling nyata bahwa JavaScript kini bebas dari browser adalah kode yang berjalan langsung di terminal. Simpan kode berikut sebagai berkas salam.mjs, lalu jalankan dengan perintah node salam.mjs:

js
const nama = "Budi";
const jamMulai = 8;

function sapa(pengguna, jam) {
  return `Selamat belajar, ${pengguna}! Kita mulai pukul ${jam}.00 tepat waktu.`;
}

console.log(sapa(nama, jamMulai));
console.log(`Berjalan di atas Node.js ${process.version}`);

Output yang Dihasilkan:

text
Selamat belajar, Budi! Kita mulai pukul 8.00 tepat waktu.
Berjalan di atas Node.js v24.21.0

Mari kita telaah baris-baris kode di atas:

  1. Baris 1 (const nama = "Budi"): variable nama dideklarasikan dengan const dan menyimpan string "Budi".
  2. Baris 3-5 (function sapa(...)): function sapa menerima dua parameter, lalu mengembalikan string yang dirangkai memakai template literal — tanda backtick dengan ${...} untuk menyisipkan nilai.
  3. Baris 7 (console.log(sapa(...))): hasil pemanggilan sapa() dicetak ke terminal. Object console tetap tersedia di Node.js sama seperti di browser.
  4. Baris 8 (process.version): object process adalah API khusus Node.js yang tidak ada di browser; properti version menyimpan versi Node.js yang sedang berjalan.

Perintah node --version menampilkan versi runtime yang terpasang di komputer kita:

bash
node --version

Output yang Dihasilkan:

text
v24.21.0

Angka versi pada komputer Anda dapat berbeda dari contoh di atas; yang penting contoh kode Course ini diuji pada Node.js 24. Cara menginstal dan memilih versi dibahas pada Section Persiapan Lingkungan.

Karakteristik Utama Node.js #

KarakteristikArtinya bagi kita
Event-drivenEksekusi kode bergerak mengikuti kejadian: koneksi masuk, berkas selesai dibaca, timer berakhir
Non-blocking I/OOperasi lambat seperti jaringan dan berkas tidak menghentikan eksekusi kode lain
Satu main thread + event loopKode JavaScript kita berjalan pada satu thread yang dikelola event loop; beban CPU berat dapat dialihkan ke worker_threads
Lintas platformKode yang sama berjalan di Windows, macOS, dan Linux
Ekosistem npmLebih dari dua juta package siap pakai untuk mempercepat pekerjaan

Kombinasi karakteristik tersebut membuat Node.js sangat cocok untuk aplikasi yang I/O-bound: API yang melayani ribuan permintaan, layanan realtime seperti chat, hingga alat CLI yang membaca banyak berkas. Sebaliknya, untuk komputasi murni yang berat seperti pengolahan citra, kita perlu pola tambahan agar main thread tidak sibuk — materi ini menunggu kita di Section Worker Threads.

Ke Mana Setelah Ini #

Kita telah melihat Node.js sebagai runtime JavaScript berbasis V8 dengan model event-driven, dan menjalankan contoh pertama langsung di terminal. Pemahaman ini cukup sebagai pijakan; cerita bagaimana Node.js lahir, tumbuh, dan berubah hingga versi hari ini akan memperjelas mengapa banyak keputusan desainnya berbentuk seperti sekarang — itu topik Chapter Sejarah dan Perkembangan Node.js.