Node.js cho người mới: Hướng dẫn từ cơ bản

Node.js

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.

Trang chủ Node.js

Cài đặt nhanh 3 bước

  1. Tải và cài file .msi (Windows) hoặc .pkg (macOS) từ nodejs.org/download
  2. Mở terminal, gõ node -vnpm -v để xác nhận đã cần đặt
  3. Tạo thư mục dự án đầu tiên: mkdir my-app rồi cd 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ạo package.json với cấu hình mặc định
  • npm install <package> — cài gói vào node_modules
  • npm install -D <package> — cài dev dependency (chỉ dùng khi phát triển)
  • npm start — chạy lệnh start trong script
  • npm 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ả

  1. Bắt đầu với nguyên lý core: event loop, stream, modules
  2. Thêm Express để học routing và API thực tế
  3. Làm quen npm — cài, quản lý version, viết script
  4. Xây dựng dự án nhỏ — API QR code, web ghi chú có database
  5. 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

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

GraphQL là gì? So sánh GraphQL và REST API khi nào nên dùng

GraphQL đang trở thành lựa chọn phổ biến cho các dự án API hiện đại, nhưng REST vẫn là tiêu chuẩn được dùng rộng rãi nhất. Bài viết này so…

Xem thêm

JavaScript cơ bản cho người mới: Hướng dẫn từ con số không

JavaScript là gì? JavaScript là ngôn ngữ lập trình phổ biến nhất thế giới, chạy trên mọi trình duyệt và cả phía máy chủ với Node.js. Nếu bạn muốn bắt…

Xem thêm

Testing trong lập trình: Unit test, integration test và cách áp dụng

Testing trong lập trình là kỹ năng phân biệt giữa code chạy được và code chạy đúng. Bất kỳ ai viết code đều cần hiểu rõ các loại test và…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất