nodejs-best-practices 是做什么的?
Node.js 开发原则与决策指导。涵盖框架选择、异步模式、安全性及架构设计。注重培养思考能力,而非简单复制代码。
核心原则
- 理性决策:根据项目需求而非流行趋势选择技术方案
- 安全优先:将安全内置到开发流程的每个环节
- 异步范式:深入理解事件循环、Promise 与 async/await 的底层机制
- 架构演进:从单体到微服务的渐进式架构决策
框架选择指南
| 场景 | 推荐框架 | 取舍分析 |
|---|---|---|
| REST API | Express/Fastify | Express 生态成熟,Fastify 性能更优 |
| 全栈 | Next.js/Nuxt | 需要 SSR 或静态站点生成时优先 |
| 实时应用 | Socket.IO | 内置回退机制和房间管理 |
| 微服务 | NestJS | 提供依赖注入和模块化架构 |
异步模式最佳实践
async/await 优先
// ❌ 避免嵌套回调
fs.readFile('/etc/passwd', (err, data) => {
if (err) throw err;
processData(data, (err, result) => {
if (err) throw err;
});
});
// ✅ 使用 async/await
async function readAndProcess() {
const data = await fs.promises.readFile('/etc/passwd');
return processData(data);
}
并发控制
- 使用
Promise.all()处理无依赖的并行任务 - 用
Promise.allSettled()处理需要部分结果的场景 - 考虑
p-limit限制并发数量防止资源耗尽
安全策略
- 依赖安全:定期运行
npm audit并启用 Dependabot - 输入验证:使用 Joi/Zod 进行运行时类型检查
- 机密管理:永远不提交
.env文件,使用密钥管理服务 - HTTP 安全头:采用
helmet中间件
架构决策记录
当面临架构决策时,遵循以下流程:
- 明确问题上下文(性能/可维护性/团队技能)
- 列举至少3种备选方案
- 评估每种方案的优缺点(包括技术债)
- 记录最终决策及推理过程
记住:没有银弹。最佳实践是理解权衡后的智慧选择,而非死记硬背的规则。