Node.js adalah runtime yang menjalankan JavaScript di luar browser: di server, di terminal, atau sebagai alat command line. Node.js bukan bahasa pemrograman (bahasanya adalah JavaScript) dan bukan framework (Express adalah framework yang berjalan di atas Node.js). Node.js menggabungkan engine V8 milik Google, yang mengeksekusi JavaScript, dengan event loop dan API bawaan untuk file, jaringan, dan proses yang tidak dimiliki browser.
Program ini mencetak isi file, versi mayor (v24), dan undefined untuk window, karena Node.js tidak punya halaman web yang bisa memberikannya. fs dan process hanya ada di Node.js; jalankan baris yang sama di tab browser dan baris pertama langsung melempar error.
Node.js itu framework atau bahasa?
Bukan keduanya. JavaScript adalah bahasanya. Node.js adalah program yang menjalankannya, sama seperti JVM menjalankan Java atau CPython menjalankan Python. Framework berada di atasnya: Express, Fastify, dan NestJS adalah library yang kamu install ke dalam proyek Node.js. Halaman Node.js vs JavaScript membandingkan keduanya secara detail.
Di balik layar, Node.js terdiri dari empat bagian:
- V8, engine JavaScript dari Chrome. V8 mengubah kodemu menjadi kode mesin lalu menjalankannya.
- libuv, library C yang menyediakan event loop dan mengerjakan tugas lambat (disk, jaringan, timer) di latar belakang, lalu menyerahkan hasilnya ke callback-mu.
- API milik Node sendiri:
fsuntuk file,httpuntuk server,path,process,crypto,events, dan lainnya, tersedia lewatrequireatauimporttanpa perlu install. - npm, package manager yang ikut terpasang bersama Node.js dan memberimu akses ke registry package terbesar dari bahasa mana pun.
Cara menjalankan file Node.js
Install Node.js dari situs resminya (pilih versi LTS), lalu cek dari terminal dan jalankan sebuah file:
node --version # prints v24.x.x or similar
node app.js # runs app.js and exits when it has nothing left to do
node # with no file: an interactive prompt (the REPL)
Program berhenti sendiri begitu tidak ada lagi yang ditunggu: tidak ada timer, tidak ada server yang terbuka, tidak ada pembacaan file yang tertunda. Itulah sebabnya sebuah script selesai, sedangkan web server terus berjalan.
Non-blocking I/O, ide intinya
Node.js tidak menunggu pekerjaan yang lambat. Node.js memulai pembacaan file atau request jaringan, terus menjalankan baris berikutnya, lalu memanggil fungsimu saat hasilnya siap.
Dua baris console.log setelah readFile berjalan lebih dulu, dan isi file tiba paling akhir. Begitulah satu proses Node.js melayani ribuan koneksi: selama satu request menunggu database, event loop tetap menggerakkan yang lain.
Node.js vs browser
| Browser | Node.js | |
|---|---|---|
| Berjalan | Di halaman web | Di terminal atau di server |
| Punya | window, document, DOM, localStorage | fs, process, http, Buffer, require |
| Global object | window (dan globalThis) | global (dan globalThis) |
| File di disk | Tidak ada akses | Akses penuh, dengan izin user-mu |
setTimeout, console, fetch, URL | Ya | Ya |
Kegunaan Node.js
- Web server dan API: backend REST dan GraphQL, sering dengan Express.
- Aplikasi real-time: chat, dashboard live, dan game multiplayer lewat WebSocket, saat banyak koneksi tetap terbuka bersamaan.
- Alat command line: npm sendiri, Vite, ESLint, Prettier, dan compiler TypeScript semuanya berjalan di Node.js.
- Script dan otomatisasi: mengganti nama file, memanggil API, memigrasikan data.
Penggunaan yang paling umum adalah HTTP server, dan module bawaan http sudah cukup untuk yang pertama:
Server menjawab GET /hello dengan path yang diterimanya. Ubah path di request bar menjadi /anything lalu kirim: balasannya ikut berubah, karena server ini menangani setiap URL dengan satu fungsi.
Kapan memilih Node.js
Pilih Node.js saat pekerjaannya kebanyakan menunggu I/O (request, database, file) dan kamu ingin satu bahasa di frontend dan backend. Node.js kurang cocok untuk perhitungan panjang yang berat di CPU seperti encoding video atau pengolahan angka berskala besar, karena komputasi panjang memblokir satu-satunya thread JavaScript dan setiap request lain harus menunggunya.
Pertanyaan yang sering diajukan
Node.js itu frontend atau backend?
Kebanyakan backend. Node.js berjalan di server atau di komputermu sendiri, bukan di browser pengunjung. Developer frontend tetap memakainya setiap hari, karena alat seperti npm, Vite, dan ESLint adalah program Node.js.
Siapa yang membuat Node.js dan kapan?
Ryan Dahl merilis Node.js pada 2009. Sekarang Node.js dikelola oleh OpenJS Foundation, dengan versi mayor baru setiap enam bulan, dan versi bernomor genap mendapat dukungan jangka panjang (LTS).
Apakah aku perlu bisa JavaScript sebelum belajar Node.js?
Ya, setidaknya dasarnya: variabel, fungsi, object, array, dan callback atau promise. Node.js menambahkan API, bukan sintaks baru, jadi semua yang kamu pelajari tentang bahasanya langsung berlaku.
Apakah Node.js single-threaded?
Kode JavaScript-mu berjalan di satu thread. Di balik layar, Node.js memakai thread pool kecil untuk pekerjaan file system, DNS, dan sebagian crypto, jadi I/O yang lambat tidak memblokir kodemu selama menunggu.