Node 与服务端总览
这部分主要站在前端工程师的视角来整理。重点不是把所有后端知识一次学完,而是先把几件经常会碰到的事理清楚:服务怎么搭、接口怎么组织、代理怎么配、进程怎么跑起来。
1. Node.js 核心特性
1.1 基础架构
- 事件驱动:基于事件驱动的非阻塞 I/O 模型
- V8 引擎:使用 Google V8 引擎执行 JavaScript 代码
- 单线程:主线程单线 程执行,通过事件循环处理并发
- 异步 I/O:利用 libuv 库实现跨平台的异步 I/O
1.2 核心优势
-
高性能
- 非阻塞 I/O 操作
- 事件循环机制
- V8 引擎的高效执行
- 适合 I/O 密集型应用
-
跨平台
- 支持 Windows、macOS、Linux
- 统一的 API 接口
- 良好的跨平台兼容性
-
生态系统
- npm:世界最大的包管理系统
- 丰富的开源模块
- 活跃的社区支持
-
开发效率
- 前后端统一语言(JavaScript/TypeScript)
- 快速的项目启动和迭代
- 丰富的工具链和框架
1.3 局限性
-
CPU 密集型任务
- 单线程执行 JavaScript
- 不适合复杂计算
- 需要通过 Worker Threads 或子进程处理
-
回调地狱
- 异步编程模型的潜在问题
- 需要通过 Promise、async/await 改善
-
浮点数精度
- JavaScript 数字类型的限制
- 需要特 殊处理金融计算
-
内存限制
- V8 引擎的内存限制
- 需要合理控制内存使用
2. 主流框架对比
2.1 框架特性对比
| 特性 | Express | Koa | Fastify | NestJS |
|---|---|---|---|---|
| 设计理念 | 简单灵活 | 轻量优雅 | 高性能 | 企业级架构 |
| 上手难度 | 简单 | 中等 | 中等 | 较难 |
| 性能表现 | 中等 | 良好 | 优秀 | 良好 |
| TypeScript支持 | 需配置 | 需配置 | 原生支持 | 原生支持 |
| 中间件机制 | 线性模型 | 洋葱模型 | 钩子系统 | 装饰器模式 |
| 路由系统 | 内置 | 需安装 | 内置 | 内置 |
| 扩展性 | 高 | 高 | 高 | 高 |
| 社区活跃度 | 非常活跃 | 活跃 | 较活跃 | 活跃 |
| 生态系统 | 丰富 | 一般 | 较少 | 丰富 |
| 维护成本 | 低 | 中 | 中 | 高 |
2.2 框架优势对比
| 框架 | 主要优势 | 主要劣势 | 最佳应用场景 |
|---|---|---|---|
| Express | • 简单直观的API • 丰富的中间件 • 学习曲线平缓 • 成熟的社区 | • 性能较低 • TypeScript支持不足 • 异步处理较旧 • 架构不够严谨 | • 快速原型开发 • 小型应用 • 学习项目 |