

Node.js cho người mới: Hướng dẫn từ cơ bản đến chạy server
Node.js là môi trường chạy JavaScript phía máy chủ — cho phép bạn dùng một ngôn ngữ duy nhất (JavaScript) cho cả giao diện người dùng và phần máy chủ. Với mô hình event-driven, không chặn I/O (non-blocking), Node.js đã trở thành lựa chọn hàng đầu để xây dựng API, ứng dụng thời gian thực và công cụ dòng lệnh trong hơn một thập kỷ qua.
Trong bài hướng dẫn này, mình sẽ giải thích Node.js là gì, tại sao nó quan trọng, cách cài đặt, khái niệm event loop, các ví dụ code cụ thể với HTTP server gốc và Express.js — tất cả với ngôn ngữ dễ hiểu cho người lập trình mới bắt đầu.
Node.js là gì? Tại sao nó quan trọng?
Node.js được phát hành lần đầu năm 2009 bởi Ryan Dahl, dựa trên motor V8 của Google Chrome — biên dịch JavaScript rất nhanh thành mã máy native. Điểm khác biệt lớn với các ngôn ngữ backend truyền thống như PHP hay Java là Node.js có thể xử lý hàng ngàn kết nối đồng thời chỉ bằng một luồng duy nhất, với bộ nhớ thấp hơn hẳn cho mỗi yêu cầu.
Vì sao quan trọng với người mới? Ba lý do chính: (1) Học một ngôn ngữ cho cả frontend và backend — tiết kiệm thời gian cực lớn; (2) npm (Node Package Manager) cung cấp hơn 2 triệu gói sẵn sàng dùng, không cần viết lại từ đầu; (3) Nhu cầu tuyển dụng full-stack JavaScript rất cao tại Việt Nam và toàn cầu.
Cài đặt nhanh 3 bước
- Tải và cài file
.msi(Windows) hoặc.pkg(macOS) từ nodejs.org/download - Mở terminal, gõ
node -vvànpm -vđể xác nhận đã cần đặt - Tạo thư mục dự án đầu tiên:
mkdir my-apprồicd my-app, sau đónpm init -yđể sinh file package.json
Event Loop — “trái tim” của Node.js
Event Loop là cơ chế cho phép Node.js hoạt động không chặn: trong khi chờ các thao tác I/O chậm (đọc file, gọi mạng, truy vấn cơ sở dữ liệu), Node.js vẫn tiếp tục xử lý các công việc khác. Khi I/O hoàn tất, nó được đưa vào hàng đợi (queue) và callback được thực thi.
Nguyên lý chính: Nếu không có việc để làm, Node.js ngủ. Đây là điểm khác biệt căn bản với mô hình multi-thread truyền thống của PHP hoặc Java, vốn lãng phí tài nguyên khi phải chạy nhiều luồng chờ đợi.
Tài liệu Event Loop chính thức
Hell World với HTTP Server gốc
Tạo file server.js với nội dung sau:
import { createServer } from 'node:http';
const hostname = '127.0.0.1';
const port = 3000;
const server = createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server chạy tại http://${hostname}:${port}/`);
});
Chạy với lệnh node server.js, sau đó mở http://localhost:3000 trên trình duyệt. Bạn sẽ thấy “Hello World” — server web đầu tiên của bạn hoạt động!
Express.js — Framework nhẹ, mạnh mẽ
Express.js là framework web phổ biến nhất của Node.js, giúp xây dựng routing, middleware và API nhanh hơn nhiều so với HTTP core. Cài đặt nhanh trong 1 dòng:
npm install express
Ví dụ server với routing:
import express from 'express';
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World');
});
app.get('/api/users', (req, res) => {
res.json([{ name: 'Nguyen Van A' }, { name: 'Tran Thi B' }]);
});
app.listen(port, () => {
console.log(`Server chạy tại http://localhost:${port}`);
});
npm — Kho gói cực lớn
npm là trái tim của hệ sinh thái Node.js. Một số lệnh cần nhớ khi mới bắt đầu:
npm init -y— tạopackage.jsonvới cấu hình mặc địnhnpm install <package>— cài gói vàonode_modulesnpm install -D <package>— cài dev dependency (chỉ dùng khi phát triển)npm start— chạy lệnh start trong scriptnpm run dev— tùy bạn định nghĩa trong package.json
Node.js so với Python, Java — nên chọn gì?
| Tiêu chí | Node.js | Python | Java |
|---|---|---|---|
| Tốc độ I/O | Rất nhanh | Trung bình | Nhanh |
| Xử lý đồng thời | Non-blocking | Async/await | Multi-thread |
| Bộ nhớ mỗi request | Thấp | Trung bình | Cao |
| Ecosystem | 2M+ gói | Nhiều | Enterprise |
Trái nghiệm phụ thuộc vào loại công việc: Node.js tuyệt vời với REST API và thời gian thực, Python mạnh về data science/ML, Java phù hợp hệ thống doanh nghiệp lớn.
Node.js thực tế dùng để làm gì?
- REST API & Backend — phục vụ frontend React/Vue/Angular cho web, mobile, app
- Ứng dụng thời gian thực — chat, dashboard sống dùng Socket.IO
- Ứng dụng desktop — qua Electron (VS Code, Slack, Discord đều dùng)
- Công cụ CLI & tự động hóa — build tool, scraper, pipeline xử lý dữ liệu
- IoT và xử lý file — stream dữ liệu lớn từng mảnh không đầy bộ nhớ
Lộ trình học Node.js hiệu quả
- Bắt đầu với nguyên lý core: event loop, stream, modules
- Thêm Express để học routing và API thực tế
- Làm quen npm — cài, quản lý version, viết script
- Xây dựng dự án nhỏ — API QR code, web ghi chú có database
- Khám phá Fastify, Koa, hoặc NestJS khi đã vững nền tảng
Kết luận
Node.js là lựa chọn tuyệt vời cho người mới học lập trình web: dễ vào vì JavaScript đã quen, hệ sinh thái npm khổng lồ giúp bạn không phải viết lại mọi thứ, và nhu cầu thị trường lao động rất lớn. Chỉ cần 1-2 tuần thực hành Event Loop và Express, bạn đã có thể build ra những REST API đầu tiên của mình.
Tài liệu Express.js | Tài liệu npm | Tài liệu Node.js chính thức
