Node.js dari Nol
Node.js menjalankan JavaScript di luar browser, di komputer Anda dan di server. Anda bisa memakai satu bahasa untuk sisi depan maupun sisi belakang. Node.js memakai I/O tanpa pemblokiran, yang cocok untuk pekerjaan jaringan dan API. Artikel ini menjalankan skrip pertama, membaca dan menulis file dengan modul standar, dan membangun server HTTP kecil yang membalas dengan JSON.
Setiap contoh di sini sudah dijalankan dengan Node.js dan keluarannya adalah keluaran nyata.
Yang Anda butuhkan
- Node.js 18 atau lebih baru (periksa dengan `node --version`)
- Editor teks seperti VS Code
Cara kerjanya
Skrip pertama Anda
Buat `hello.js` dan jalankan dengan `node hello.js`:
console.log("Halo Node.js");
Modul serta membaca dan menulis file
Node.js sudah menyertakan modul standar seperti `fs` untuk file dan `path` untuk jalur. Contoh ini menulis file JSON lalu membacanya kembali.
const http = require("http");
const path = require("path");
const fs = require("fs");
// modul dan fungsi
function nilai(skor) {
if (skor >= 80) return "A";
if (skor >= 70) return "B";
if (skor >= 50) return "C";
return "F";
}
const siswa = [
{ name: "Budi", score: 85 },
{ name: "Siti", score: 72 },
{ name: "Andi", score: 45 },
];
// menulis file lalu membacanya kembali
const file = path.join(__dirname, "nilai.json");
fs.writeFileSync(file, JSON.stringify(siswa.map(s => ({ ...s, grade: nilai(s.score) })), null, 2));
const data = JSON.parse(fs.readFileSync(file, "utf8"));
console.log("Halo Node.js", data.length, "orang");
console.log(data.map(d => `${d.name}: ${d.grade}`).join("\n"));
// server HTTP kecil: membalas JSON lalu berhenti setelah 1 balasan (untuk pengujian)
const server = http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "application/json; charset=utf-8" });
res.end(JSON.stringify({ message: "Salam dari Node.js", count: data.length }));
server.close();
});
server.listen(3100, () => console.log("server listening on http://localhost:3100"));
Keluaran nyata (jalankan skrip, lalu kirim permintaan dengan curl ke `http://localhost:3100/`):
Halo Node.js 3 orang
Budi: A
Siti: B
Andi: F
server listening on http://localhost:3100
{"message":"Salam dari Node.js","count":3}
Hal yang perlu diperhatikan:
- `require` memuat modul, dan `__dirname` adalah folder tempat skrip berada.
- `fs.writeFileSync` dan `fs.readFileSync` bersifat sinkron dan menunggu sampai selesai. Itu tidak masalah untuk skrip kecil, tetapi server sebaiknya memakai versi asinkron seperti `fs.promises.readFile`.
- Callback yang diberikan ke `http.createServer` berjalan setiap kali ada permintaan masuk.
Promise dan async/await
Akses file secara asinkron membuat program tetap berjalan saat menunggu. Contoh ini memakai `async/await` agar kodenya terbaca berurutan:
const fs = require("fs/promises");
async function main() {
await fs.writeFile("catatan.txt", "Catatan dari Node.js");
const text = await fs.readFile("catatan.txt", "utf8");
console.log("Terbaca:", text);
}
main().catch(err => console.error("Terjadi kesalahan:", err.message));
Kesalahan umum
- **Port sudah dipakai:** ganti nomor port, atau hentikan program yang sedang memakainya.
- **Lupa `await` pada Promise:** Anda mendapat Promise itu sendiri, bukan hasilnya.
- **Memakai `require` di file ES Module tanpa pengaturan:** periksa jenis modul di `package.json`.
- **Tidak menangani error:** gunakan `try/catch` atau `.catch` agar program bisa melaporkan penyebabnya.
Langkah berikutnya
Buat API yang menyimpan daftar tugas di file JSON, lalu lanjut ke Express atau Fastify, dua framework populer untuk Node.js.
Ringkasan
Node.js membawa JavaScript ke server. Modul standar menangani file dan jaringan, dan async/await membuat kode bersamaan tetap mudah dibaca.