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:
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:
Selamat belajar, Budi! Kita mulai pukul 8.00 tepat waktu.
Berjalan di atas Node.js v24.21.0Mari kita telaah baris-baris kode di atas:
- Baris 1 (
const nama = "Budi"): variablenamadideklarasikan denganconstdan menyimpan string"Budi". - Baris 3-5 (
function sapa(...)): functionsapamenerima dua parameter, lalu mengembalikan string yang dirangkai memakai template literal — tanda backtick dengan${...}untuk menyisipkan nilai. - Baris 7 (
console.log(sapa(...))): hasil pemanggilansapa()dicetak ke terminal. Objectconsoletetap tersedia di Node.js sama seperti di browser. - Baris 8 (
process.version): objectprocessadalah API khusus Node.js yang tidak ada di browser; propertiversionmenyimpan versi Node.js yang sedang berjalan.
Perintah node --version menampilkan versi runtime yang terpasang di komputer kita:
node --versionOutput yang Dihasilkan:
v24.21.0Angka 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 #
| Karakteristik | Artinya bagi kita |
|---|---|
| Event-driven | Eksekusi kode bergerak mengikuti kejadian: koneksi masuk, berkas selesai dibaca, timer berakhir |
| Non-blocking I/O | Operasi lambat seperti jaringan dan berkas tidak menghentikan eksekusi kode lain |
| Satu main thread + event loop | Kode JavaScript kita berjalan pada satu thread yang dikelola event loop; beban CPU berat dapat dialihkan ke worker_threads |
| Lintas platform | Kode yang sama berjalan di Windows, macOS, dan Linux |
| Ekosistem npm | Lebih 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.