Master NodeJS: Dari Pemula Menjadi Mahir dengan Studi Kasus
Daftar Isi
1. Pengantar NodeJS
NodeJS adalah platform runtime JavaScript yang dibangun di atas mesin V8 milik Google Chrome. Dengan NodeJS, pengembang dapat menjalankan kode JavaScript di luar browser, memungkinkan pembuatan aplikasi server-side yang cepat dan scalable.

NodeJS sangat populer untuk membangun aplikasi web real-time, API, dan berbagai aplikasi jaringan lainnya karena kemampuannya menangani banyak koneksi secara asynchronous dan non-blocking.
2. Instalasi dan Setup Lingkungan
Untuk mulai menggunakan NodeJS, Anda perlu menginstal NodeJS dan npm (Node Package Manager) di komputer Anda.
- Unduh installer NodeJS dari https://nodejs.org .
- Ikuti instruksi instalasi sesuai sistem operasi Anda (Windows, macOS, Linux).
-
Verifikasi instalasi dengan menjalankan perintah
node -v
dannpm -v
di terminal.

Setelah instalasi, Anda dapat mulai membuat proyek NodeJS dengan membuat folder baru dan menjalankan
npm init
untuk membuat file
package.json
.
3. Konsep Dasar NodeJS
Beberapa konsep dasar yang perlu dipahami dalam NodeJS:
- Single-threaded: NodeJS berjalan pada satu thread utama, namun dapat menangani banyak koneksi secara asynchronous.
- Non-blocking I/O: Operasi input/output tidak memblokir eksekusi kode lainnya.
- Event-driven: NodeJS menggunakan event loop untuk menangani event dan callback.

Memahami konsep ini sangat penting agar dapat menulis aplikasi NodeJS yang efisien dan scalable.
4. Modul dan Paket
NodeJS menggunakan sistem modul untuk mengorganisasi kode. Ada dua jenis modul utama:
-
Modul built-in:
Seperti
fs
,http
,path
. -
Modul eksternal:
Paket yang diunduh dari npm, seperti
express
,mongoose
.
Contoh penggunaan modul built-in:
const fs = require('fs');
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
Untuk menginstal modul eksternal, gunakan perintah
npm install nama-paket
.
5. Event Loop dan Asynchronous Programming
Event loop adalah mekanisme yang memungkinkan NodeJS menjalankan operasi asynchronous tanpa memblokir thread utama. Ini memungkinkan NodeJS menangani banyak operasi I/O secara efisien.

Contoh asynchronous dengan callback:
console.log('Mulai');
setTimeout(() => {
console.log('Timeout selesai');
}, 1000);
console.log('Selesai');
Outputnya akan:
- Mulai
- Selesai
- Timeout selesai (setelah 1 detik)
Selain callback, NodeJS juga mendukung Promise dan async/await untuk penanganan asynchronous yang lebih mudah dibaca.
6. Studi Kasus: Membangun RESTful API
Kita akan membuat RESTful API sederhana menggunakan framework ExpressJS.
-
Instal Express dengan
npm install express
. -
Buat file
app.js
dengan kode berikut:
const express = require('express');
const app = express();
const port = 3000;
app.use(express.json());
const users = [
{ id: 1, name: 'Budi' },
{ id: 2, name: 'Sari' }
];
app.get('/users', (req, res) => {
res.json(users);
});
app.post('/users', (req, res) => {
const user = { id: users.length + 1, name: req.body.name };
users.push(user);
res.status(201).json(user);
});
app.listen(port, () => {
console.log(`Server berjalan di http://localhost:${port}`);
});
Jalankan server dengan
node app.js
dan akses
http://localhost:3000/users
untuk melihat daftar user.

7. Database dengan MongoDB
MongoDB adalah database NoSQL yang populer digunakan bersama NodeJS. Kita akan menggunakan Mongoose sebagai ODM (Object Data Modeling).
-
Instal Mongoose dengan
npm install mongoose
. - Contoh koneksi dan schema Mongoose:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/myapp', {
useNewUrlParser: true,
useUnifiedTopology: true
});
const userSchema = new mongoose.Schema({
name: String,
email: String,
createdAt: { type: Date, default: Date.now }
});
const User = mongoose.model('User', userSchema);
async function createUser() {
const user = new User({ name: 'Andi', email: 'andi@example.com' });
await user.save();
console.log('User tersimpan:', user);
}
createUser();

Dengan Mongoose, Anda dapat dengan mudah membuat, membaca, memperbarui, dan menghapus data di MongoDB menggunakan model yang terstruktur.
8. Autentikasi dan Autorisasi
Autentikasi memastikan pengguna adalah siapa yang mereka klaim, sedangkan autorisasi menentukan akses apa yang dimiliki pengguna tersebut.
Contoh sederhana menggunakan JSON Web Token (JWT) untuk autentikasi:
const jwt = require('jsonwebtoken');
const secretKey = 'rahasia123';
function generateToken(user) {
return jwt.sign({ id: user.id, name: user.name }, secretKey, { expiresIn: '1h' });
}
function verifyToken(token) {
try {
return jwt.verify(token, secretKey);
} catch (err) {
return null;
}
}

Anda dapat mengintegrasikan middleware untuk memeriksa token pada setiap request yang membutuhkan proteksi.
9. Testing dan Debugging
Testing penting untuk memastikan aplikasi berjalan sesuai harapan. Beberapa tools populer untuk testing NodeJS adalah Jest dan Mocha.
Contoh sederhana test menggunakan Jest:
function tambah(a, b) {
return a + b;
}
test('menambahkan 1 + 2 sama dengan 3', () => {
expect(tambah(1, 2)).toBe(3);
});
Untuk debugging, Anda dapat menggunakan
console.log
atau debugger built-in di VSCode dengan menjalankan NodeJS dalam mode debug.

10. Deployment Aplikasi NodeJS
Setelah aplikasi selesai, langkah selanjutnya adalah deployment ke server atau platform cloud.
- Platform populer: Heroku, Vercel, DigitalOcean, AWS.
- Pastikan environment variables diset dengan benar.
- Gunakan process manager seperti PM2 untuk menjalankan aplikasi di server.
Contoh menjalankan aplikasi dengan PM2:
npm install pm2 -g
pm2 start app.js
pm2 status

Dengan deployment yang tepat, aplikasi NodeJS Anda dapat diakses oleh pengguna secara global.
11. Kesimpulan
NodeJS adalah platform yang powerful untuk membangun aplikasi server-side dengan JavaScript. Dengan memahami konsep dasar, modul, asynchronous programming, dan praktik terbaik, Anda dapat membuat aplikasi yang scalable dan maintainable.
Studi kasus membangun RESTful API dan integrasi dengan database MongoDB memberikan gambaran nyata bagaimana NodeJS digunakan dalam pengembangan aplikasi modern.
Teruslah belajar dan bereksperimen dengan berbagai fitur dan paket NodeJS untuk menjadi mahir dan siap menghadapi tantangan pengembangan aplikasi masa kini.
