Lompat ke konten
Kembali ke modul

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.

BrowserNode.js
TujuanMenampilkan halaman ke seseorangMenjalankan program di sebuah mesin
Bisa membaca fileTidak — hanya yang dipilih penggunaYa, apa pun yang diizinkan
Bisa membuka port jaringanTidakYa
Punya document, windowYaTidak
Punya process, fs, pathTidakYa
Siapa mengontrol versinyaPenggunaKamu
Dalam sandboxSangat, dengan sengajaNyaris 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.

Coba sendiri

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

RuntimeEngineYang perlu diketahui
Node.jsV8Standarnya. Semua mendukungnya.
BunJavaScriptCoreInstall jauh lebih cepat; menjalankan TypeScript langsung. Proyek ini memakainya.
DenoV8Aman secara default, TypeScript sudah termasuk
Edge runtimeisolate V8Cloudflare 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.