Node.js
AI bổ sungNó là gì?
Môi trường chạy JavaScript/TypeScript phía server, xây dựng trên engine V8 của Chrome, dùng mô hình event-driven, non-blocking I/O để xử lý nhiều kết nối đồng thời với ít thread.
Dùng để làm gì?
Xây dựng REST/GraphQL API, server-side rendering (Next.js, Nuxt), real-time apps (WebSocket), CLI tools, build tools (Vite, Webpack), microservices, serverless functions, xử lý file/stream, tác vụ nền (cron, queue workers).
Chạy ở đâu?
Server (Linux/Windows/macOS), VPS, container (Docker/K8s), serverless (Vercel, AWS Lambda, Cloudflare Workers), edge runtime, desktop (Electron, Tauri), CI/CD pipelines.
Nó thường đi với gì?
Express, Fastify, Hono, NestJS, Next.js, Nuxt, TypeScript, npm/pnpm/yarn, PostgreSQL/MySQL/MongoDB (qua driver/ORM), Redis, Docker, PM2, Vitest/Jest, ESLint/Prettier.
App của mình khi nào cần?
Cần chạy JS/TS ngoài trình duyệt; cần hiệu năng I/O cao cho API, streaming, real-time; team dùng JS/TS full-stack; cần hệ sinh thái package khổng lồ (npm); deploy serverless/edge; viết tooling, script tự động hóa.
Khi nào không cần?
Ứng dụng CPU-intensive nặng (video encoding, ML training) — nên dùng Rust/Go/C++ qua native addon hoặc service riêng; hệ thống real-time cực thấp latency (high-frequency trading) — cân nhắc C++/Rust; môi trường không cho chạy binary Node (một số embedded/restricted).
Từ khóa lỗi thường gặp
ECONNREFUSED, EADDRINUSE, ENOTFOUND, EMFILE (too many open files), ERR_MODULE_NOT_FOUND, ERR_REQUIRE_ESM, RangeError: Maximum call stack size exceeded, JavaScript heap out of memory, Node version incompatible, EPERM/EACCES (permission), unhandled promise rejection.
Một câu để nhớ
V8 + event loop + npm = JavaScript chạy mọi nơi, không chỉ browser.