Node.js membawa JavaScript keluar dari browser dan menjadikannya runtime untuk server, alat CLI, hingga scripts otomatisasi. Pada Course ini kita akan mempelajari Node.js secara menyeluruh: dari event loop, module system, filesystem, dan stream, hingga REST API, database, authentication, testing, deployment, dan TypeScript.
Seluruh contoh kode pada Course ini diuji menggunakan Node.js 24 (LTS). Apabila Anda menggunakan versi Node.js yang berbeda, hasil eksekusi beberapa contoh dapat sedikit berbeda, terutama pada bagian yang memanfaatkan fitur terbaru. Panduan kompatibilitas versi tersedia pada bagian Sumber Belajar.
Bab 1 Pengenalan Node.js
Kenali Node.js, runtime JavaScript yang memungkinkan JavaScript berjalan di luar browser.
Buka → # Sejarah dan Perkembangan Node.jsTelusuri kelahiran Node.js pada 2009 hingga menjadi runtime yang dipakai jutaan proyek.
Buka → # V8 JavaScript EnginePahami V8, mesin JavaScript buatan Google yang mengeksekusi kode Node.js.
Buka → # Bagaimana Node.js BekerjaLihat perjalanan kode dari berkas sumber hingga dieksekusi oleh V8 dan libuv.
Buka → # Node.js vs JavaScript di BrowserBandingkan lingkungan Node.js dan browser: global object, API, dan model eksekusi.
Buka → # Kegunaan dan Ekosistem Node.jsKenali ragam aplikasi yang dibangun dengan Node.js beserta ekosistem npm-nya.
Buka → # Versi Node.js dan KompatibilitasPahami siklus rilis Node.js, garis LTS, dan cara membaca kompatibilitas fitur.
Buka →Bab 2 Persiapan Lingkungan
Pasang Node.js di Windows, macOS, dan Linux melalui installer resmi dan package manager.
Buka → # Memverifikasi Instalasi Node.jsPastikan node dan npm terpasang dengan benar melalui perintah verifikasi sederhana.
Buka → # Menggunakan Node.js REPLCoba kode JavaScript secara interaktif langsung dari terminal dengan REPL.
Buka → # Menjalankan File JavaScriptJalankan berkas .js, .mjs, dan .cjs dari terminal serta pahami perbedaannya.
Buka → # Memilih Code EditorKenali pertimbangan memilih editor untuk pengembangan Node.js.
Buka → # Struktur Proyek Node.jsSusun direktori proyek Node.js yang rapi dan mudah dirawat.
Buka → # Mengelola Versi Node.jsGunakan version manager untuk berpindah versi Node.js antar proyek.
Buka → # Memecahkan Masalah InstalasiAtasi masalah umum instalasi: perintah tidak dikenali, versi salah, dan izin berkas.
Buka →Bab 3 JavaScript untuk Node.js
Gunakan let dan const dengan memahami block scope, hoisting, dan temporal dead zone.
Buka → # Tipe Data dan KonversiKenali tipe data primitive dan reference beserta aturan konversinya.
Buka → # Function dan Arrow FunctionBandingkan function declaration, expression, dan arrow function beserta kata kunci this.
Buka → # Object dan DestructuringBaca dan bentuk object dengan property shorthand, destructuring, dan spread.
Buka → # Array dan Higher-Order FunctionOlah koleksi data dengan map, filter, reduce, dan method array modern lainnya.
Buka → # Class dan PrototypeTulis class berbasis prototype dengan method, getter, setter, dan inheritance.
Buka → # Penanganan Error dengan try-catchKenali object Error dan alur try-catch-finally dalam JavaScript.
Buka → # Promise dan async-awaitTulis kode asynchronous dengan promise, async function, dan await.
Buka → # Iterator dan GeneratorPahami protokol iterator dan function generator untuk produksi nilai bertahap.
Buka →Bab 4 Modules dan Packages
Ekspor dan impor kode dengan module.exports dan require().
Buka → # ES ModulesGunakan import dan export, format standar JavaScript modern, di Node.js.
Buka → # Resolusi ModuleTelusuri algoritma pencarian module dari specifier hingga berkas di disk.
Buka → # package.jsonKenali berkas identitas proyek: name, version, scripts, dan type.
Buka → # npm dan DependenciesKelola dependencies dan devDependencies dengan perintah npm.
Buka → # Semantic VersioningBaca versi paket dengan format major.minor.patch beserta rentang semver.
Buka → # npm ScriptsOtomatiskan tugas proyek dengan scripts pada package.json.
Buka → # Membuat Package SendiriSusun package yang siap dibagikan: struktur, exports, dan persiapan publikasi.
Buka →Bab 5 Core Modules
Kenali daftar core module Node.js dan konvensi prefix node:.
Buka → # Module pathRangkai dan urai path berkas lintas sistem operasi dengan module path.
Buka → # Module urlParsing dan bentuk URL dengan module url dan class URL global.
Buka → # Module utilGunakan utilitas node:util: parseArgs, promisify, format, dan inspect.
Buka → # Module events dan EventEmitterBangun komponen pengirim dan pelanggan event dengan EventEmitter.
Buka → # Module processBaca argumen, environment, dan kejadian proses melalui object process.
Buka → # Module osBaca informasi sistem operasi: platform, CPU, memori, dan homedir.
Buka →Bab 6 Filesystem
Kenali tiga gaya API module fs: callback, promise, dan synchronous.
Buka → # Membaca BerkasBaca berkas teks dan biner dengan readFile serta encoding yang tepat.
Buka → # Menulis BerkasTulis berkas dengan writeFile dan appendFile beserta opsi flag-nya.
Buka → # Direktori dan Operasi BerkasBuat direktori, salin, pindahkan, dan hapus berkas dengan fs/promises.
Buka → # Metadata BerkasBaca ukuran, waktu, dan tipe berkas melalui stat.
Buka → # Memantau Perubahan BerkasReaksi terhadap perubahan berkas dengan watch dan watchFile.
Buka → # Penanganan Error pada FilesystemKenali error umum filesystem seperti ENOENT dan cara menanganinya.
Buka →Bab 7 Buffers dan Streams
Pahami Buffer sebagai array byte dan hubungannya dengan alokasi memori.
Buka → # Encoding dan KonversiKonversi antara string dan Buffer dengan berbagai encoding.
Buka → # Konsep StreamKenali empat jenis stream dan aliran data di dalamnya.
Buka → # Readable StreamKonsumsi data dari readable stream dengan event dan async iterator.
Buka → # Writable StreamTulis data ke writable stream dan tangani penyelesaiannya.
Buka → # Transform StreamUbah data di tengah pipa dengan transform stream.
Buka → # pipe dan pipelineSambungkan stream satu sama lain dengan pipe dan pipeline.
Buka → # BackpressurePahami dan atasi penumpukan data saat konsumen lebih lambat dari produsen.
Buka →Bab 8 Asynchronous Runtime
Pahami siklus event loop yang menjadi inti model eksekusi Node.js.
Buka → # Call Stack dan Microtask QueueTelusuri urutan eksekusi antara call stack, microtask, dan macrotask.
Buka → # Pola CallbackTulis callback yang aman dengan konvensi error-first.
Buka → # Promise untuk Tugas ParalelJalankan tugas paralel dengan Promise.all, allSettled, any, dan race.
Buka → # process.nextTick dan setImmediateBedakan tiga cara menunda eksekusi: nextTick, setImmediate, dan setTimeout.
Buka → # Timer dan SchedulingJadwalkan eksekusi dengan setTimeout, setInterval, dan setUnref.
Buka → # Worker ThreadsJalankan beban CPU berat di thread terpisah dengan worker_threads.
Buka → # Error pada Kode AsynchronousTangani error callback, rejection promise, dan uncaughtException.
Buka →Bab 9 Command-Line Applications
Baca argumen baris perintah secara langsung dari process.argv.
Buka → # Parsing Argumen dengan util.parseArgsParsing opsi dan positional dengan util.parseArgs dari node:util.
Buka → # Environment VariablesBaca dan kelola environment variable melalui process.env.
Buka → # stdin, stdout, dan stderrBaca input pengguna dan tulis output ke tiga stream standar.
Buka → # Exit CodeLaporkan hasil eksekusi ke sistem operasi dengan exit code yang bermakna.
Buka → # Signal dan Event ProsesTangani SIGINT, SIGTERM, dan event siklus hidup proses.
Buka → # Child ProcessJalankan proses lain dengan exec, execFile, spawn, dan fork.
Buka → # Membangun CLI dengan CommanderSusun CLI multi-perintah dengan opsi dan help otomatis menggunakan Commander.
Buka →Bab 10 Networking
Kenali TCP, UDP, port, dan socket sebelum menulis kode jaringan.
Buka → # Membangun TCP ServerTerima koneksi TCP dan layani data dengan module net.
Buka → # Membangun TCP ClientSambungkan ke server TCP dan tukar data dari sisi client.
Buka → # UDP dengan Module dgramKirim dan terima datagram UDP tanpa koneksi.
Buka → # Resolusi DNSTerjemahkan nama domain menjadi alamat IP dengan module dns.
Buka → # Membangun Protokol Berbasis BarisRancang protokol teks sederhana di atas koneksi TCP.
Buka →Bab 11 HTTP dan Web Servers
Pahami request, response, method, header, dan status code HTTP.
Buka → # HTTP Server DasarBangun server HTTP pertama dengan http.createServer.
Buka → # Routing dan RequestArahkan permintaan ke penangan yang tepat berdasarkan method dan URL.
Buka → # Membaca Request BodyKumpulkan dan urai body request JSON dari stream request.
Buka → # Response dan HeaderAtur status, header, dan tipe konten response HTTP.
Buka → # HTTP Client dengan fetchKonsumsi API dari sisi Node.js dengan fetch global.
Buka → # Static File ServerLayani berkas statis dengan aman memakai module http dan fs.
Buka → # HTTPS dan TLSBangun server TLS dan pahami dasar sertifikat untuk HTTPS.
Buka →Bab 12 REST API
Pahami prinsip REST: resource, representasi, dan statelessness.
Buka → # Merancang Endpoint RESTRancang URL, method, dan struktur response yang konsisten.
Buka → # CRUD dengan Penyimpanan di MemoriBangun operasi Create, Read, Update, Delete di atas penyimpanan memori.
Buka → # Status Code dan Penanganan ErrorGunakan status code HTTP yang tepat dan bentuk error response seragam.
Buka → # Validasi InputPeriksa data masukan sebelum diproses oleh aplikasi.
Buka → # Pagination dan FilteringBatasi dan saring hasil API dengan query parameter.
Buka → # Versioning APIKelola perubahan API dari waktu ke waktu tanpa merusak client lama.
Buka → # Dokumentasi API dengan OpenAPITulis spesifikasi OpenAPI yang menjelaskan endpoint secara formal.
Buka →Bab 13 Framework dan Middleware
Timbang kebutuhan proyek sebelum menambah framework ke dalam dependencies.
Buka → # Express: DasarBangun aplikasi Express pertama dengan routing dan JSON response.
Buka → # Routing pada ExpressSusun route berparameter, route chaining, dan router terpisah.
Buka → # Middleware pada ExpressSusun pipeline permintaan dengan middleware di Express.
Buka → # Error Handling pada ExpressTangkap error di satu tempat dengan error middleware Express.
Buka → # Fastify: DasarKenali Fastify: server cepat dengan skema JSON dan async handler.
Buka → # Memilih FrameworkBandingkan Express, Fastify, dan server polos untuk kebutuhan berbeda.
Buka →Bab 14 Database Integration
Pahami peran driver dan pola dasar koneksi Node.js ke database.
Buka → # SQLite dengan node:sqliteGunakan database SQLite tertanam langsung di dalam runtime Node.js.
Buka → # Koneksi PostgreSQL dengan pgSambungkan Node.js ke PostgreSQL dengan driver pg.
Buka → # Koneksi MySQL dengan mysql2Sambungkan Node.js ke MySQL dengan driver mysql2.
Buka → # Query ParameterizedKirim nilai ke query dengan parameter terikat, bukan string concatenation.
Buka → # Connection PoolingEfisienkan koneksi database dengan connection pool.
Buka → # TransaksiJaga konsistensi data dengan transaksi dan rollback.
Buka → # ORM dengan PrismaKenali pendekatan ORM dan contoh pemakaian Prisma.
Buka →Bab 15 Authentication dan Authorization
Bedakan autentikasi (siapa Anda) dan authorization (apa yang boleh Anda lakukan).
Buka → # Password Hashing dengan scryptSimpan password dengan aman menggunakan scrypt dari node:crypto.
Buka → # Session dan CookieKelola status login pengguna dengan session dan cookie.
Buka → # Token dan JWTPahami struktur JSON Web Token dan verifikasi tanda tangannya.
Buka → # Middleware AutentikasiLindungi endpoint dengan middleware pemeriksa kredensial.
Buka → # Role-Based Access ControlBatasi akses endpoint berdasarkan peran pengguna.
Buka → # Konsep OAuth 2.0Kenali alur delegasi akses OAuth 2.0 dan kapan memakainya.
Buka →Bab 16 Security
Terapkan prinsip dasar keamanan: least privilege, defense in depth, dan fail secure.
Buka → # Validasi dan Sanitasi InputPeriksa dan bersihkan data masukan sebelum dipakai aplikasi.
Buka → # SQL InjectionPahami cara kerja SQL injection dan mencegahnya dengan parameterized query.
Buka → # Cross-Site Scripting (XSS)Kenali serangan XSS dan cara menyimpan serta menampilkan data dengan aman.
Buka → # Command InjectionCegah penyisipan perintah pada pemanggilan proses eksternal.
Buka → # Cross-Site Request Forgery (CSRF)Pahami serangan CSRF dan pola token yang mencegahnya.
Buka → # Rate LimitingBatasi frekuensi permintaan untuk melindungi endpoint dari penyalahgunaan.
Buka → # Manajemen SecretKelola kredensial dan API key tanpa menuliskannya di dalam kode.
Buka →Bab 17 Testing
Kenali jenis pengujian dan anatomi sebuah test case.
Buka → # Test Runner Bawaan node:testTulis dan jalankan test dengan test runner resmi Node.js.
Buka → # Assertion dengan node:assertBandingkan hasil dengan assertion strict dari node:assert.
Buka → # Menguji Kode AsynchronousUji promise, timer, dan event dengan async test.
Buka → # MockingIsolasi unit dari dependencies dengan mock dari node:test.
Buka → # Test CoverageUkur cakupan kode oleh test dengan coverage bawaan Node.js.
Buka → # Integration Test untuk HTTP ServerUji endpoint HTTP secara menyeluruh dengan server nyata di port ephemeral.
Buka → # Testing dengan VitestKenali test runner Vitest beserta fitur watch dan reporternya.
Buka →Bab 18 Debugging dan Code Quality
Sambungkan inspector dan telusuri eksekusi kode baris demi baris.
Buka → # Membaca Stack TraceUrai pesan error dan jejak stack untuk menemukan sumber masalah.
Buka → # Teknik LoggingSusun log yang informatif dengan level dan konteks yang tepat.
Buka → # Linting dengan ESLintTemukan masalah kode secara otomatis dengan ESLint.
Buka → # Formatting dengan PrettierSeragamkan gaya kode di seluruh tim dengan Prettier.
Buka → # Konsistensi Gaya KodeGabungkan ESLint dan Prettier dalam alur kerja proyek.
Buka →Bab 19 Architecture dan Design
Pisahkan tanggung jawab kode menjadi layer yang jelas.
Buka → # Pola RepositoryEncapsulate akses data di balik satu pintu yang bisa ditukar.
Buka → # Dependency InjectionSuntikkan dependensi dari luar agar kode mudah diuji dan dirakit ulang.
Buka → # Pola Service LayerTempatkan aturan bisnis di service dan jadikan rute setipis mungkin.
Buka → # Event-Driven ArchitectureLonggarkan kopling antar komponen lewat kejadian domain dengan EventEmitter.
Buka → # Konfigurasi AplikasiBangun satu modul konfigurasi tervalidasi dari environment variable.
Buka → # Struktur Proyek yang SkalabelRancang tata letak folder yang tetap sehat saat aplikasi dan tim bertumbuh.
Buka →Bab 20 Performance dan Scalability
Ukur waktu eksekusi dengan performance.now dan perf_hooks.
Buka → # Profiling CPU dan HeapRekam dan baca profil CPU serta heap snapshot Node.js.
Buka → # Memory Management dan Garbage CollectionPahami cara V8 mengelola memori dan menghindari memory leak.
Buka → # CachingPercepat respons dengan cache di beberapa tingkat aplikasi.
Buka → # ClusteringManfaatkan banyak core CPU dengan module cluster.
Buka → # Pola Worker PoolBatasi konkurensi beban berat dengan worker pool.
Buka → # Load TestingUji ketahanan API di bawah beban dengan alat load testing.
Buka →Bab 21 Deployment dan Operations
Siapkan aplikasi untuk produksi: dependencies, berkas, dan pemeriksaan akhir.
Buka → # Konfigurasi ProduksiKelola environment, port, dan mode produksi dengan benar.
Buka → # Process Manager dengan PM2Jalankan dan pantau aplikasi produksi dengan PM2.
Buka → # Docker untuk Node.jsKemas aplikasi Node.js menjadi image Docker yang efisien.
Buka → # Docker ComposeSusun aplikasi multi-container dengan Docker Compose.
Buka → # Logging dan MonitoringPantau aplikasi produksi dengan log terstruktur dan metrik sederhana.
Buka → # Graceful ShutdownMatikan aplikasi dengan teratur: selesaikan permintaan berjalan sebelum keluar.
Buka → # CI/CD dengan GitHub ActionsOtomatiskan pemeriksaan dan penyebaran dengan GitHub Actions.
Buka →Bab 22 TypeScript dengan Node.js
Kenali masalah yang diselesaikan TypeScript untuk proyek JavaScript besar.
Buka → # Setup Proyek TypeScriptPasang TypeScript dan konfigurasi tsconfig untuk Node.js.
Buka → # Tipe Dasar TypeScriptAnotasi tipe primitif, array, union, literal, inferensi, dan perbedaan any dengan unknown.
Buka → # Interface dan GenericMenjelaskan bentuk object dengan interface dan menulis function serba-guna dengan generic.
Buka → # Strict ModeAktifkan pemeriksaan ketat TypeScript untuk menangkap bug lebih awal.
Buka → # Menjalankan TypeScript di Node.jsDua jalan menjalankan berkas TypeScript: penghapusan tipe dan kompilasi.
Buka → # Migrasi Bertahap dari JavaScriptPindahkan proyek JavaScript ke TypeScript selangkah demi selangkah tanpa berhenti.
Buka →Bab 23 Modern Node.js
Tinjau fitur penting yang hadir pada Node.js versi-versi terbaru.
Buka → # Watch ModePantau perubahan berkas dan restart otomatis dengan node --watch.
Buka → # Berkas Environment dengan --env-fileMuat konfigurasi dari berkas .env dengan flag bawaan Node.js.
Buka → # Permission ModelBatasi akses proses Node.js ke berkas, jaringan, dan proses anak.
Buka → # Single Executable ApplicationPaketkan aplikasi dan runtime Node.js menjadi satu berkas executable.
Buka → # Web API di Node.jsGunakan Web API standar seperti fetch, URL, dan FormData di Node.js.
Buka →Bab 24 Proyek Node.js
Bangun alat CLI pengelola berkas dengan util.parseArgs, fs/promises, dan test yang lengkap.
Lihat proyek → # Proyek: REST API Manajemen TugasBangun REST API manajemen tugas dengan module http, routing, penyimpanan JSON, dan test.
Lihat proyek → # Proyek: Blog APIBangun API blog dengan node:sqlite: skema relasional, endpoint artikel, komentar, dan test.
Lihat proyek → # Proyek: Background Job ProcessorBangun pemroses background job: antrean, worker, retry, pemantauan, dan graceful shutdown.
Lihat proyek → # Proyek: Secure Authentication ServiceBangun layanan autentikasi: scrypt, session, token berperan, rate limiting, dan test.
Lihat proyek →Bab 25 Sumber Belajar
Peta sumber dokumentasi resmi Node.js dan cara menavigasinya.
Buka → # Membaca Referensi APICara membaca halaman referensi API Node.js: stability index, opsi, dan event.
Buka → # GlosariumDaftar istilah penting dunia Node.js beserta penjelasan ringkasnya.
Buka → # Panduan DebuggingPeta gejala umum, dugaan penyebab, dan langkah pemeriksaan yang teratur.
Buka → # Panduan KeamananDaftar periksa keamanan aplikasi Node.js dari dependensi hingga secret.
Buka → # Referensi KompatibilitasMatriks fitur Node.js dan versi ketika fitur tersebut tersedia.
Buka →