Lewati ke konten utama
  1. Node.js/

Dasar-Dasar Node.js untuk Pemula

Penulis
GezyTech
Menulis tentang AI, Linux, Server, Docker, dan teknologi lainnya.

TLDR
#

Node.js adalah runtime JavaScript untuk backend yang memungkinkan kamu menjalankan JavaScript di luar browser. Dengan arsitektur non-blocking I/O dan event loop, Node.js mampu menangani ribuan koneksi simultan dengan sumber daya minimal. Artikel ini akan memandumu dari instalasi hingga membuat REST API dengan Express.js — semuanya dari nol.


Pendahuluan
#

JavaScript dulu hanya dikenal sebagai bahasa untuk membuat website interaktif di browser. Tapi pada tahun 2009, Ryan Dahl menciptakan Node.js — runtime JavaScript yang bisa berjalan di server.

Sejak saat itu, JavaScript tidak lagi terbatas di frontend. Dengan Node.js, kamu bisa membuat REST API, CLI tools, bot Telegram, web scraper, bahkan aplikasi real-time seperti chat atau game server.

Sekarang Node.js adalah salah satu runtime yang paling populer. Ekosistemnya — npm (Node Package Manager) — adalah registry package terbesar di dunia dengan lebih dari 2 juta package. Hampir semua yang kamu butuhkan sudah ada di npm.

Artikel ini akan membantumu memahami Node.js dari konsep paling dasar hingga aplikasi praktis.


Konten Utama
#

1. Apa Itu Node.js?
#

Node.js adalah JavaScript runtime yang dibangun di atas V8 engine — mesin JavaScript yang sama dengan Google Chrome. Bedanya, Node.js berjalan di server, bukan di browser.

Apa yang bisa dilakukan dengan Node.js?

Bidang Contoh
REST API Backend untuk aplikasi web dan mobile
CLI Tools Otomatisasi tugas, scaffolding proyek
Web Socket Chat real-time, game server, kolaborasi
File Processing Upload, resize gambar, konversi dokumen
IoT / Embedded Raspberry Pi, sensor, robotik
API Gateway Proxy, rate limiting, autentikasi

Perbandingan Node.js vs Bahasa Backend Lain:

Aspek Node.js Python PHP Go
Bahasa JavaScript Python PHP Go
Eksekusi Single-thread + Event Loop Multi-thread Multi-process Multi-thread
Kecepatan Cepat Sedang Sedang Sangat Cepat
Cocok untuk I/O-heavy, real-time Data science, AI Website tradisional Microservices, infra
Package registry npm (2M+) PyPI (400K+) Packagist (300K+) pkg.go.dev

2. Instalasi Node.js
#

Via Node Version Manager (nvm) — direkomendasikan
#

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash

# Restart terminal atau jalankan:
source ~/.bashrc

# Install Node.js versi terbaru LTS
nvm install --lts

# Cek versi
node --version  # v20.x atau v22.x
npm --version   # 10.x

Via Package Manager (Ubuntu/Debian)
#

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs

3. JavaScript vs Node.js: Apa Bedanya?
#

Fitur JavaScript (Browser) Node.js
Global object window, document global, process
DOM ✅ Ada ❌ Tidak ada
File system ❌ Tidak bisa akses file fs module
Module ES Modules (import) CommonJS (require) + ESM
Package manager CDN npm
Environment Browser pengguna Server

Contoh: di browser kamu punya document.getElementById('...') — di Node.js kamu punya fs.readFileSync('/path/file').

4. Hello World — Script Pertama
#

Buat file hello.js:

console.log('Halo dari Node.js!');
console.log('Versi Node:', process.version);
console.log('Sistem operasi:', process.platform);

Jalankan:

node hello.js

Output:

Halo dari Node.js!
Versi Node: v20.15.0
Sistem operasi: linux

5. Module System
#

Node.js punya dua sistem module:

CommonJS (default)
#

// math.js
function add(a, b) {
    return a + b;
}

function multiply(a, b) {
    return a * b;
}

module.exports = { add, multiply };
// index.js
const math = require('./math');

console.log(math.add(5, 3));      // 8
console.log(math.multiply(4, 2)); // 8

ES Modules (modern)
#

// package.json
{
    "type": "module"
}
// math.js
export function add(a, b) {
    return a + b;
}

export function multiply(a, b) {
    return a * b;
}
// index.js
import { add, multiply } from './math.js';

console.log(add(5, 3));      // 8
console.log(multiply(4, 2)); // 8

Untuk saat ini, CommonJS masih yang paling banyak digunakan. Tapi tren ke depan mengarah ke ESM.

6. Arsitektur Node.js — Event Loop & Non-Blocking I/O
#

Node.js menggunakan single-thread dengan event loop. Artinya:

  • Satu thread utama menangani semua request
  • Operasi lambat (baca file, query database, request HTTP) dijalankan secara asynchronous
  • Thread utama tidak pernah “diblok” — tetap bisa melayani request lain

Contoh:

const fs = require('fs');

console.log('1. Mulai');

// Non-blocking — tidak menunggu
fs.readFile('data.txt', 'utf8', (err, data) => {
    console.log('2. File selesai dibaca');
});

console.log('3. Selesai');

// Output:
// 1. Mulai
// 3. Selesai
// 2. File selesai dibaca

Tanpa non-blocking I/O, program harus menunggu file selesai dibaca sebelum lanjut ke baris berikutnya. Dengan Node.js, eksekusi tetap jalan, dan callback dipanggil setelah file siap.

7. File System (fs) Module
#

const fs = require('fs');

// Baca file (sync — blocking, hindari di production)
const data = fs.readFileSync('data.txt', 'utf8');

// Baca file (async — non-blocking, recommended)
fs.readFile('data.txt', 'utf8', (err, data) => {
    if (err) {
        console.error('Error:', err);
        return;
    }
    console.log(data);
});

// Tulis file
fs.writeFile('output.txt', 'Halo dari Node.js!', (err) => {
    if (err) throw err;
    console.log('File berhasil ditulis');
});

// Baca folder
fs.readdir('.', (err, files) => {
    console.log('Isi folder:', files);
});

8. Web Server dari 0 (Tanpa Framework)
#

Node.js punya module http bawaan untuk membuat server:

const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify({
        message: 'Halo dari Node.js!',
        url: req.url,
        method: req.method,
    }));
});

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

Jalankan dan buka http://localhost:3000 — REST API pertamamu sudah hidup.

9. NPM — Node Package Manager
#

NPM adalah package manager bawaan Node.js. Dengan npm, kamu bisa menggunakan jutaan package open-source.

Inisialisasi Proyek
#

mkdir project-saya
cd project-saya

# Buat package.json
npm init -y

Install Package
#

# Install untuk production
npm install express

# Install untuk development
npm install --save-dev nodemon

# Install global
npm install -g pm2

Scripts di package.json
#

{
    "scripts": {
        "start": "node index.js",
        "dev": "nodemon index.js"
    }
}

Jalankan:

npm run dev

10. Express.js — Framework Web Paling Populer
#

Express adalah framework minimalis untuk membuat web server dan REST API. Hampir semua developer Node.js memulai dengan Express.

Instalasi
#

npm install express

Hello World dengan Express
#

const express = require('express');
const app = express();
const PORT = 3000;

// Middleware untuk parsing JSON
app.use(express.json());

// Route GET /
app.get('/', (req, res) => {
    res.json({ message: 'Halo dari Express!' });
});

// Route GET /api/users
app.get('/api/users', (req, res) => {
    const users = [
        { id: 1, name: 'Budi' },
        { id: 2, name: 'Ani' },
        { id: 3, name: 'Citra' },
    ];
    res.json(users);
});

// Route POST /api/users
app.post('/api/users', (req, res) => {
    const newUser = req.body;
    res.status(201).json({
        message: 'User berhasil ditambah',
        user: newUser,
    });
});

// Route dengan parameter
app.get('/api/users/:id', (req, res) => {
    const id = req.params.id;
    res.json({ message: `Detail user dengan ID ${id}` });
});

app.listen(PORT, () => {
    console.log(`Server berjalan di http://localhost:${PORT}`);
});

11. Middleware di Express
#

Middleware adalah fungsi yang berjalan sebelum route handler. Berguna untuk logging, autentikasi, error handling, dll.

// Middleware logging
app.use((req, res, next) => {
    console.log(`${req.method} ${req.url} - ${new Date().toISOString()}`);
    next(); // Lanjut ke route handler
});

// Middleware autentikasi sederhana
app.use('/api/admin', (req, res, next) => {
    const token = req.headers.authorization;
    if (!token) {
        return res.status(401).json({ message: 'Unauthorized' });
    }
    next();
});

// Error handling middleware (harus 4 parameter)
app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).json({ message: 'Terjadi error internal' });
});

12. Mengelola Aplikasi dengan PM2
#

Di production, aplikasi Node.js perlu dijalankan sebagai service yang auto-restart saat crash. PM2 adalah process manager untuk Node.js.

# Install PM2
npm install -g pm2

# Jalankan aplikasi
pm2 start index.js --name "my-app"

# Lihat daftar proses
pm2 list

# Monitor resource
pm2 monit

# Auto-restart saat crash
pm2 startup
pm2 save

# Log
pm2 logs

# Restart
pm2 restart my-app

Kesimpulan
#

Node.js telah menjadi pilihan utama untuk backend JavaScript berkat kesederhanaan dan performanya. Dengan pemahaman event loop, module system, dan Express.js, kamu sudah bisa membuat REST API sendiri.

Yang sudah kamu pelajari:

  • Instalasi Node.js dan NPM
  • Module system (CommonJS & ESM)
  • File system dan operasi asynchronous
  • Membuat web server dengan module http
  • Express.js — routing, middleware, REST API
  • PM2 untuk production

Langkah selanjutnya:

  1. Install Node.js dengan nvm
  2. Buat proyek Express pertamamu
  3. Eksplorasi middleware dan routing
  4. Tambahkan database (SQLite, MySQL, atau MongoDB)
  5. Deploy dengan PM2

Selamat coding! 🚀


Artikel ini ditulis dengan bantuan AI dan telah diedit oleh tim GezyTech.