Node.js dựa vào một số ít design pattern hợp với hệ thống module, mô hình bất đồng bộ và I/O dạng stream của nó. Những pattern phổ biến nhất mà mọi lập trình viên backend nên nhận ra:
Node.js dựa vào một số ít design pattern hợp với hệ thống module, mô hình bất đồng bộ và I/O dạng stream của nó. Những pattern phổ biến nhất mà mọi lập trình viên backend nên nhận ra:
module.exports / export, giữ phần nội bộ private. Đây là nền tảng tổ chức code trong Node.// db.js — mọi `require("./db")` đều nhận cùng pool này (singleton qua module cache).
const pool = createPool(process.env.DATABASE_URL);
module.exports = pool;
function createLogger(kind) {
return kind === "json" ? new JsonLogger() : new TextLogger();
}
EventEmitter, streams, và hầu hết module core dùng nó.const { EventEmitter } = require("node:events");
const bus = new EventEmitter();
bus.on("order:paid", (o) => sendReceipt(o));
bus.emit("order:paid", order);
(ctx, next), được Express/Koa phổ biến hóa. Rất hợp cho các mối quan tâm xuyên suốt (auth, logging, validation).app.use((req, res, next) => { req.startedAt = Date.now(); next(); });
const { pipeline } = require("node:stream/promises");
await pipeline(fs.createReadStream("in"), gzip(), fs.createWriteStream("out.gz"));
| Nhu cầu | Pattern |
|---|---|
| Một tài nguyên dùng chung | Singleton (module cache) |
Tạo object, giấu new | Factory |
| Phản ứng với event bất đồng bộ | Observer / EventEmitter |
| Logic request xuyên suốt | Middleware |
| Xử lý dữ liệu lớn an toàn | Streams / pipeline |
| Phụ thuộc dễ test, tách rời | Dependency Injection |
Pattern là một vốn từ chung: nói "config là singleton cache theo module" hay "auth là middleware" truyền đạt một thiết kế chỉ trong vài từ. Bản thân core của Node (EventEmitter, streams, hệ thống module) được xây từ những pattern này, nên nhận ra chúng giúp bạn đọc framework và cấu trúc service của mình. Người phỏng vấn dùng câu này để kiểm tra bạn không chỉ nối callback tùy tiện, mà chọn đúng pattern phù hợp — và hiểu đánh đổi của nó, như singleton làm state toàn cục khó test hơn.
Thư viện câu hỏi phỏng vấn IT với đáp án chi tiết — từ Junior đến Senior.
Ủng hộ