Pernahkah Anda merasa bingung saat ingin membuat aplikasi web yang cepat dan scalable menggunakan JavaScript? Atau mungkin Anda sudah familiar dengan dunia frontend tapi ingin mulai menguasai backend?

Dalam pengembangan server-side JavaScript, Anda akan menemukan sebuah runtime  manager bernama Node.js. Node.js merupakan salah satu tempat untuk mengunduh package manager atau tools untuk membuat website berlandaskan JavaScript.

Sayangnya, belajar Node.js sering terasa menantang bagi seorang pemula. Ini disebabkan karena banyak konsep baru yang harus dipahami–mulai dari instalasi, manajemen paket, hingga membuat server dan menghubungkan database.

Jangan khawatir! Kami akan memberikan Anda panduan untuk mempelajari Node.js secara bertahap. Simak artikel ini untuk melihat step-by-step yang dilakukan dalam belajar Node.js!

Hal yang Harus Dipelajari Sebelum Belajar Node.js

Sebelum menggunakan Node.js, Anda juga perlu memiliki pemahaman tentang JavaScript yang kuat. Untuk memahami cara kerja Node.js, Anda perlu memahami beberapa konsep berikut.

  • Lexical Structure: Lexical structure adalah aturan penulisan sintaksis JavaScript seperti spasi, komentar, dan tanda baca. Dengan pemahaman, kode yang Anda buat akan valid dan mudah dibaca.
  • Expressions: Expressions merupakan unit kode yang menghasilkan nilai. Di dalamnya termasuk operasi aritmatika, pemanggilan fungsi, dan logika bersyarat.
  • Data Types: JavaScript memiliki tipe data seperti string, number, boolean, null, undefined, object, dan symbol.
  • Classes: Classes merupakan cara untuk membuat blueprint objek di JavaScript. Dengan ini, Anda dapat menstrukturkan kode dengan konsep OOP.
  • Variables: Deklarasi variabel dengan var, let, dan const mempengaruhi cakupan dan cara kerja variabel tersebut.
  • Functions: Fungsi adalah sebuah blok kode yang dapat dipanggil berulang kali.
  • this operator: Kata kunci this merujuk pada konteks eksekusi saat ini dan dapat berbeda tergantung bagaimana fungsi dipanggil.
  • Arrow Functions: Arrow function merupakan cara baru menulis fungsi yang lebih ringkas, dengan perilaku this yang tetap.
  • Loops: Loop seperti for, while, dan forEach digunakan untuk mengeksekusi blok kode secara berulang.
  • Scopes: Scope menentukan di mana variabel dapat diakses. Terdapat beberapa scope dalam JavaScript seperti global scope, function scope, dan block scope.
  • Arrays: Array adalah sebuah struktur data yang menyimpan koleksi elemen. Dalam JavaScript, terdapat banyak method array untuk memanipulasi data.
  • Template Literals: Template literals menggunakan backtick (`) dan memungkinkan interpolasi variabel dalam string dengan cara yang lebih elegan.
  • Strict Mode: Mengaktifkan strict mode (‘use strict’;) membantu menghindari bug dengan membuat JavaScript lebih ketat.
  • ECMAScript 2015 (ES6) and beyond: Fitur-fitur baru seperti let, const, arrow functions, dan class membuat JavaScript lebih modern dan mudah digunakan.
  • Asynchronous JavaScript: Pemahaman tentang callback, promise, dan async/await penting dalam mengelola operasi asynchronous seperti HTTP request.
Install Node.js

Instalasi Node.js

Unduhlah installer Node.js dari situs resminya–nodejs.org. Anda dapat memilih versi LTS (Long Term Support) untuk kestabilan terbaik. Setelah selesai mengunduh, jalankan installer dan ikuti instruksi hingga proses instalasi selesai.

Untuk memastikan Node.js sudah terpasang dengan benar, buka terminal atau command prompt dan ketik perintah di bawah ini:

bash

node -v  

npm -v

Perintah ini akan membantu menampilkan versi Node.js dan npm (Node Package Manager) yang terpasang. Node.js akan menyediakan runtime JavaScript di server, sedangkan npm membantu mengelola paket-paket yang dibutuhkan dalam proyek.

Setelah itu, lakukan  juga tools editor coding. Anda bisa memilih salah satu di antara banyaknya pilihan–seperti VSCode, Sublimetext, Vim, dan Naon.

Mempelajari Modul Node.js

Node.js memiliki banyak modul bawaan sehingga Anda dapat membangun aplikasi server-side tanpa harus mengandalkan library eksternal dari awal. Berikut adalah beberapa di antaranya:

1. File System (fs)

Modul fs digunakan untuk membaca, menulis, menghapus, dan memodifikasi file. Dengan ini, Anda bisa mengelola file secara sinkron maupun asinkron. Contoh penggunaannya antara lain untuk membaca file konfigurasi, menyimpan data dari formulir, hingga mencatat log aktivitas aplikasi.

2. HTTP

Modul ini akan memudahkan Anda dalam server dan menangani permintaan HTTP atau membuat REST APi. Dengan modul ini, Anda bisa mengatur routing, menangani method seperti GET atau POST, dan mengirim response ke client dengan mudah.

3. Path

Path membantu memanipulasi path file dan direktori. Anda bisa menggabungkan, mengambil ekstensi, atau memecah path dengan mudah. Hal ini sangat penting ketika Anda harus melakukan file upload, pengelolaan direktori, atau menyusun struktur file dalam proyek.

4. Events

Modul events mendukung pemrograman berbasis event. Dengan begitu, Anda bisa membuat custom event dan menangani event tersebut. Ini sangat bermanfaat dalam membangun aplikasi real-time atau sistem modular dengan komunikasi antar-komponen yang dinamis.

5. Stream

Selanjutnya adalah modal Stream yang memudahkan Anda membaca atau menulis data secara bertahap–ideal untuk file besar atau data streaming. Contohnya antara lain untuk memproses video, membaca file log besar, atau mentransfer data dari satu server ke server lain tanpa buffering keseluruhan konten.

6. Process

Modul process memungkinkan Anda mengakses info tentang proses Node.js, seperti argumen CLI dan sinyal sistem. Anda dapat membuat aplikasi CLI, mengatur variabel lingkungan, dan mengatur respons terhadap sinyal seperti SIGINT atau SIGTERM.

7. OS

Modul os akan memberikan informasi tentang sistem operasi seperti platform, jumlah CPU, dan memori. Jenis ini sangat cocok untuk aplikasi monitoring resource atau deployment script otomatis.

8. Util

Util menyediakan fungsi bantu seperti mewarisi class, formatting string, dan debug. Modul ini sering digunakan dalam pengembangan library atau modul internal untuk menghemat waktu dan menulis kode yang lebih bersih.

Fitur-fitur Utama Node.js

Node.js menjadi salah satu runtime environment paling populer untuk menjalankan JavaScript di sisi server karena keunggulan dan kemampuannya yang unik. Berikut adalah fitur-fitur utama yang membuat Node.js menonjol:

1. Asinkron dan Berbasis Event

Semua API di Node.js bersifat non-blocking atau tidak menghambat proses lain. Node.js menggunakan event loop untuk menangani berbagai operasi secara bersamaan.

2. Single Thread tapi Skalabel

Node.js berjalan dengan satu thread menggunakan model event loop, namun tetap mampu menangani ribuan koneksi secara bersamaan. Dengan sistem ini, Node.js lebih efisien dibanding server tradisional yang menggunakan banyak thread.

3. Eksekusi Cepat dengan Mesin V8

Node.js menggunakan mesin JavaScript V8 buatan Google. Mesin ini mengubah JavaScript menjadi kode mesin sehingga performanya sangat cepat dan cocok untuk aplikasi real-time.

4. Mendukung Banyak Sistem Operasi

Node.js dapat dijalankan di berbagai platform seperti Windows, Linux, macOS, dan lainnya. Bahkan, Anda bisa menggunakannya bisa digunakan untuk membuat aplikasi desktop lintas platform dengan framework seperti Electron.

5. NPM – Gudang Library Terbesar

Node Package Manager (NPM) adalah sebuah ekosistem pustaka open-source terbesar di dunia dengan lebih dari 1 juta paket. Anda bisa dengan mudah menambahkan dan mengelola dependensi lewat kode package.json.

6. Dukungan Buffer

Node.js memiliki dukungan buffer bawaan untuk menangani data biner. Hal ini dibutuhkan jika Anda akan mengelola file, protokol jaringan, dan data stream.

7. Dukungan Streaming

Node.js dapat memproses data seiring datangnya data (streaming) tanpa harus menunggu semuanya selesai dimuat. Ini sangat berguna untuk menangani file besar atau data yang mengalir terus-menerus.

8. JavaScript Di mana-mana

Dengan Node.js, Anda bisa menggunakan JavaScript untuk pengembangan frontend dan backend sekaligus, sehingga lebih mudah berpindah konteks dan berbagi kode antar sisi klien dan server.

9. Kemampuan Real-Time

Node.js sangat cocok untuk aplikasi seperti chat, game online, dan kolaborasi real-time. Ini disebabkan karena ia mendukung WebSocket dan pustaka seperti Socket.io.

10. Cocok untuk Microservices

Node.js tergolong ringan, cepat dijalankan, dan mudah dibagi menjadi layanan kecil (microservices). Hal ini membuatnya cocok untuk sistem modern yang terdistribusi seperti pada Docker atau Kubernetes.

11. Modul Bawaan Lengkap

Selanjutnya, Node.js sudah dilengkapi banyak modul bawaan seperti HTTP, File System, Path, OS, Events, dan Crypto untuk berbagai kebutuhan fungsional dasar.

12. Dukungan Komunitas Besar

Dengan komunitas pengembang yang aktif dan sumber daya pembelajaran yang melimpah, Node.js memiliki banyak dokumentasi, kursus, dan pembaruan rutin yang didukung LTS (Long-Term Support).

13. Didukung Perusahaan Besar

Node.js dikelola oleh OpenJS Foundation dan telah digunakan oleh banyak perusahaan besar seperti Netflix, Uber, PayPal, LinkedIn, dan Walmart.

Karena semua fitur ini, Node.js sangat ideal untuk aplikasi real-time, API, server, arsitektur microservices, aplikasi data streaming, alat baris perintah (CLI tools), dan fungsi serverless (tanpa server tetap).

Cara Kerja Node.js

Node.js memiliki arsitektur unik yang membedakannya dari platform server-side tradisional. Inilah penjelasan detail tentang bagaimana cara kerja Node.js.

1. Eksekusi Kode JavaScript dengan V8 Engine

Node.js menjalankan kode JavaScript menggunakan mesin V8 buatan Google. Mesin ini mengubah JavaScript menjadi kode mesin secara langsung  sehingga proses eksekusi menjadi jauh lebih cepat dan efisien.

2. Event Loop

Event loop adalah inti dari cara kerja asynchronous di Node.js. Mekanisme ini memungkinkan Node.js untuk menangani banyak tugas secara paralel tanpa blocking. Event loop memiliki beberapa fase penting, yaitu timers, pending callbacks, idle & prepare, poll, check, dan close callbacks.

  • Timers – Menjalankan callback dari fungsi setTimeout dan setInterval.
  • Pending Callbacks – Menangani callback dari operasi I/O yang tertunda.
  • Idle & Prepare – Fase internal yang digunakan oleh Node.js.
  • Poll – Menunggu event I/O dan mengeksekusi callback-nya jika ada.
  • Check – Menjalankan callback yang dijadwalkan dengan setImmediate.
  • Close Callbacks – Menangani event penutupan seperti socket.on(‘close’).

3. Non-Blocking I/O

Node.js dirancang agar tidak perlu menunggu operasi I/O selesai. Ketika sebuah operasi seperti pembacaan file atau melakukan query database dijalankan, Node.js segera mendelegasikannya ke LibUV.

LibUV kemudian menjalankan operasi tersebut secara asinkron, bahkan memanfaatkan thread pool jika diperlukan. Setelah tugas selesai, callback-nya dimasukkan ke antrean (event queue) dan dijalankan oleh event loop.

4. Worker Pool

Untuk operasi yang memerlukan sumber daya besar seperti fs.readFile() atau crypto.pbkdf2(), Node.js memanfaatkan worker pool yang disediakan oleh LibUV. 

Worker pool ini bekerja di belakang layar menggunakan beberapa thread untuk menjalankan tugas-tugas berat. Hasil akhirnya kemudian dikirim kembali ke event loop agar callback bisa dieksekusi di thread utama.

Contoh Alur Eksekusi Node.js

Berikut adalah contoh sederhana kode Node.js:

Contoh Alur Eksekusi Node.js

Penjelasan Proses:

  1. console.log("Start") langsung dijalankan.
  2. fs.readFile() dianggap sebagai operasi berat, sehingga dikirim ke worker pool.
  3. setTimeout() masuk ke fase Timers dalam event loop.
  4. console.log("End") dijalankan segera setelahnya.
  5. Setelah file selesai dibaca, callback fs.readFile() dijalankan oleh event loop.
  6. Setelah 1 detik, callback setTimeout() dijalankan di fase Timers.

Dengan cara kerja ini, Node.js tetap responsif dan efisien dalam menangani banyak operasi I/O secara bersamaan tanpa perlu membuat banyak thread.

Dasar-dasar Node.js yang Harus Dipelajari

Bagi kamu yang ingin mulai belajar mengenai Node.js, berikut adalah pengetahuan dasar penting yang seminimum mungkin wajib dipelajari.

  • Membuat proyek Node.js baru
  • Mengeksekusi JavaScript dengan Node.js
  • Mengetahui Node.js Global Object
  • Memahami Modularization
  • Menggunakan Node Package Manager
  • Memahami Eventing
  • Memahami Filesystem
  • Memahami teknik Readable Stream dan Writable Stream

Wujudkan Impian Jadi Back-End Developer Andal!

Itulah panduan belajar Node.js yang dapat Anda ikuti. Dengan mempelajari dasar-dasar Node.js ini, Anda sudah mengambil langkah pertama yang harus dilakukan untuk menjadi back end developer yang siap membangun aplikasi yang cepat, efisien, dan scalable.

Ingin meningkatkan pengetahuan dan keterampilan di bidang back-end developer? Daftarkan diri Anda untuk mengikuti kelas yang tersedia di Coding Studio! Kami menyediakan kursus flexi dan kursus live yang dapat disesuaikan dengan kebutuhan Anda.

Tak hanya materi yang ter-update, para akademisi dan mentor kami juga menggunakan pendekatan praktis dan studi kasus nyata. Ini membuat Anda paham akan materi dan siap praktik di dunia kerja!

Mulai perjalanan belajarmu sekarang di Coding Studio dan jadilah back-end developer handal!