Node.js, Package, dan Ekosistemnya · 1/7
Apa itu Node.js
Bahasa yang sama, runtime yang berbeda. Apa yang Node beri yang browser tak akan pernah beri, dan sebaliknya.
Baca 22 menit
Setelah pelajaran ini kamu bisa
- Menjelaskan apa yang ditambahkan Node.js pada JavaScript
- Menyebutkan apa yang dimiliki browser tapi tidak Node, dan sebaliknya
- Menjelaskan kenapa Node dibangun di sekitar event dan callback
- Menyebutkan runtime JavaScript yang akan kamu temui
Node.js adalah V8 — engine yang sama dengan Chrome — dipaketkan sebagai program yang kamu jalankan dari terminal, dengan kemampuan yang dibutuhkan server ditambahkan padanya: file, jaringan, proses, dan akses sistem operasi.
| Browser | Node.js | |
|---|---|---|
| Tujuan | Menampilkan halaman ke seseorang | Menjalankan program di sebuah mesin |
| Bisa membaca file | Tidak — hanya yang dipilih pengguna | Ya, apa pun yang diizinkan |
| Bisa membuka port jaringan | Tidak | Ya |
Punya document, window | Ya | Tidak |
Punya process, fs, path | Tidak | Ya |
| Siapa mengontrol versinya | Pengguna | Kamu |
| Dalam sandbox | Sangat, dengan sengaja | Nyaris tidak — ini mesinmu sendiri |
Dua baris terakhir paling penting dalam praktik. Di browser kamu harus mendukung versi apa pun yang kebetulan dipakai penggunamu. Di server kamu sendiri yang menetapkan versinya, jadi kamu bisa memakai fitur baru di hari peluncurannya. Dan karena Node tidak dalam sandbox, bug di kode server-mu bisa menimbulkan kerusakan nyata — itu sebabnya pelajaran keamanan datang belakangan di jalur ini tapi berlaku untuk semua hal di sini.
Ide utama Node: jangan pernah menunggu
Node dibangun untuk server yang menangani ribuan koneksi di satu thread. Jawabannya, yang sudah kamu ketahui dari pelajaran event loop: jangan pernah blocking. Minta file-nya, daftarkan apa yang harus dilakukan saat ia datang, lalu lanjut ke request berikutnya.
Desain itu muncul di mana-mana di API Node sebagai pola EventEmitter: sebuah object tempat kamu memasang listener, yang akan memanggilnya nanti. Stream, server, dan proses semuanya dibangun di atasnya. Membuat versi kecilnya membantu melihat bahwa tidak ada sihir di situ.
EventEmitter yang berfungsi dalam sekitar lima belas baris. Ini bentuk dari sebagian besar API Node.
Hasil
Tekan Jalankan untuk melihat hasilnya.
Ini jalan di browser kamu, di dalam sandbox. Apa pun yang kamu tulis di sini tidak bisa merusak situs.
Runtime yang akan kamu temui
| Runtime | Engine | Yang perlu diketahui |
|---|---|---|
| Node.js | V8 | Standarnya. Semua mendukungnya. |
| Bun | JavaScriptCore | Install jauh lebih cepat; menjalankan TypeScript langsung. Proyek ini memakainya. |
| Deno | V8 | Aman secara default, TypeScript sudah termasuk |
| Edge runtime | isolate V8 | Cloudflare Workers, Vercel Edge. Tanpa fs, kecil dan cepat. |
Tugas praktik
Jalankan node --version, bun --version, dan node -p "process.platform" di terminal. Lalu mulai REPL dengan node saja, ketik process.memoryUsage(), dan tekan Enter. Kamu sedang berada di dalam runtime JavaScript tanpa halaman apa pun. Keluar dengan Ctrl + D.
Hasil yang diharapkan
Nomor versi, nama platform-mu, dan sebuah object berisi angka-angka memori.