Pengenalan NodeJs

 

1. Apa itu Node.js?

Node.js adalah runtime environment (lingkungan eksekusi) untuk JavaScript yang berjalan di sisi server (back-end).

Secara sederhana: Node.js memungkinkan kita menjalankan kode JavaScript di luar browser. Sebelum Node.js, JavaScript hanya bisa dijalankan di browser (seperti Chrome, Firefox) untuk membuat halaman web interaktif. Dengan Node.js, JavaScript kini bisa digunakan untuk membuat:

  • Web server / API

  • Aplikasi real-time (chat, notifikasi)

  • Command-line tools (alat baris perintah)

  • Aplikasi desktop (dengan Electron)

  • IoT (Internet of Things), dan masih banyak lagi.


2. Siapa pembuat Node.js?

Node.js dibuat oleh Ryan Dahl pada tahun 2009. Awalnya ia merasa frustasi dengan keterbatasan server tradisional (seperti Apache) dalam menangani banyak koneksi secara bersamaan. Ia lalu menggabungkan:

  • V8 engine (mesin JavaScript dari Google Chrome) yang sangat cepat.

  • Event-driven architecture (arsitektur berbasis event).

  • Non-blocking I/O (I/O tidak memblokir).

Hasilnya: sebuah platform yang sangat efisien untuk aplikasi real-time dan scalable.


3. Karakteristik Utama Node.js

a. Non-blocking & Asynchronous

Node.js menggunakan model I/O non-blocking. Artinya, ketika ada operasi yang membutuhkan waktu (seperti membaca file, query database, atau request ke API), Node.js tidak akan menunggu operasi selesai. Ia akan melanjutkan eksekusi kode berikutnya, dan ketika operasi selesai, ia akan memanggil callback atau menjalankan Promise.

Analoginya: Bayangkan Anda di restoran. Alih-alih menunggu pesanan Anda dimasak (blocking), Anda bisa ngobrol dulu dengan teman. Ketika pesanan sudah siap, pelayan akan memanggil Anda (callback). Ini membuat server bisa melayani banyak permintaan sekaligus tanpa menunggu satu per satu.

b. Event-Driven

Node.js memiliki event loop yang terus berjalan untuk memantau event-event (seperti request masuk, file selesai dibaca, dll.) dan menjalankan handler yang sesuai. Ini yang membuat Node.js sangat responsif.

c. Single-Threaded dengan Worker Threads

Secara default, Node.js berjalan dalam satu thread utama. Namun, dengan event loop dan non-blocking I/O, satu thread ini bisa menangani ribuan koneksi secara bersamaan (concurrent) dengan efisien. Untuk tugas berat (CPU-intensive), Node.js menyediakan Worker Threads sejak versi 10.5.0.

d. Menggunakan V8 Engine

V8 adalah mesin JavaScript buatan Google yang sangat cepat karena mengkompilasi JavaScript menjadi kode mesin (machine code) secara just-in-time. Node.js memanfaatkan V8 sehingga performanya mendekati bahasa native seperti C++.

e. Ekosistem NPM (Node Package Manager)

Node.js memiliki manajer paket terbesar di dunia, NPM (atau Yarn). Ada lebih dari 2 juta pustaka (library) siap pakai yang bisa diinstal dengan satu perintah. Ini membuat pengembangan menjadi sangat cepat karena kita tidak perlu "membangun roda" dari nol.


4. Arsitektur Node.js (Sederhana)

text
┌─────────────────────────────────┐
│          Aplikasi Node.js        │
├─────────────────────────────────┤
│       JavaScript Code           │
├─────────────────────────────────┤
│  Node.js Core API (fs, http,    │
│  path, os, dll.)               │
├─────────────────────────────────┤
│      V8 Engine (Google)         │
├─────────────────────────────────┤
│      C++ Bindings & Libuv       │
│  (Event Loop, Thread Pool)      │
└─────────────────────────────────┘
  • Libuv adalah library C++ yang menangani event loop dan thread pool, sehingga Node.js bisa melakukan operasi non-blocking di sistem operasi.


5. Kelebihan Node.js

KelebihanPenjelasan
CepatV8 engine + non-blocking I/O membuatnya sangat cepat untuk aplikasi I/O-intensive.
SkalabelMampu menangani ribuan koneksi bersamaan dengan overhead kecil.
Satu BahasaBack-end dan front-end sama-sama JavaScript, sehingga tim bisa lebih produktif (full-stack JS).
Ekosistem KayaNPM menyediakan hampir semua library yang dibutuhkan.
Real-timeSangat cocok untuk aplikasi real-time seperti chat, game online, kolaborasi dokumen, dll.
Komunitas BesarBanyak tutorial, solusi masalah, dan dukungan aktif.

6. Kekurangan Node.js

KekuranganPenjelasan
Tidak Cocok untuk CPU-IntensiveOperasi seperti pemrosesan gambar, enkripsi berat, atau komputasi besar akan memblokir event loop jika tidak di-handle dengan Worker Threads.
Callback Hell (dulu)Di awal, banyak callback bersarang yang membuat kode susah dibaca. Namun, sekarang dengan Promise dan async/await, masalah ini sudah teratasi.
Relatif MudaDibanding bahasa seperti Java atau C#, Node.js masih lebih baru, tapi sudah sangat matang.
Tooling Berubah CepatEkosistem JS bergerak sangat cepat, sehingga kadang membuat bingung developer baru.

7. Contoh Kode Sederhana

Membuat Web Server dengan Node.js (tanpa framework)

javascript
// import module http bawaan Node.js
const http = require('http');

// buat server
const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello, World! Ini Node.js!');
});

// jalankan server di port 3000
server.listen(3000, () => {
  console.log('Server berjalan di http://localhost:3000');
}); 

Untuk menjalankan: simpan sebagai server.js, lalu di terminal jalankan node server.js.


Dengan Framework Express (lebih populer)

javascript
const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello World dari Express!');
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

8. Kapan Menggunakan Node.js?

Cocok digunakan untuk:

  • Aplikasi real-time (chat, notifikasi push, kolaborasi)

  • REST API / GraphQL API

  • Microservices

  • Single Page Application (SPA) dengan backend API

  • Aplikasi streaming data

  • Command-line tools

Kurang cocok untuk:

  • Aplikasi yang berat komputasi (machine learning, rendering video, image processing) — kecuali di-delegasikan ke service lain atau menggunakan Worker Threads.

  • Aplikasi enterprise yang sangat kaku dan membutuhkan tipe data statis (walau bisa pakai TypeScript).


9. Memulai Belajar Node.js

Langkah awal:

  1. Instal Node.js dari nodejs.org (pilih versi LTS untuk stabilitas).

  2. Pelajari JavaScript modern (ES6+: let/const, arrow function, destructuring, async/await, dll.).

  3. Pahami module system (require / import).

  4. Pelajari built-in modules (fs, http, path, os).

  5. Lanjutkan ke framework seperti Express, NestJS, atau Fastify.

  6. Pelajari database (MongoDB, PostgreSQL, MySQL) dan authentication (JWT, OAuth).

  7. Pelajari testing, deployment, dan scalability.


10. Penutup

Node.js telah merevolusi dunia pengembangan web dengan membawa JavaScript ke server. Dengan konsep non-blocking, event-driven, dan ekosistem yang luar biasa, Node.js menjadi pilihan utama untuk aplikasi modern yang cepat, ringan, dan skalabel.

Mulailah dari hal kecil, buat server sederhana, lalu perlahan jelajahi modul-modul dan framework. Selamat belajar! 

Post a Comment for "Pengenalan NodeJs"