Node(TS) · 02 核心能力
真正不同:事件循环、非阻塞 I/O、单线程约束、与 Java 的边界。
1. 事件循环与非阻塞 I/O
Node 强在 等高连接、多等待,弱在 算得凶。
请求进来 → 注册 IO → 事件循环继续接别的请求
← IO 完成回调/Promise 续上- CPU 重活(大 JSON 狂转、图片重处理、加密扫目录)会 堵住整进程
- 解决:worker 线程、子进程、或把重活丢给 Java/Python/专用服务
一句话:Node 强在等 I/O,弱在算得凶。
2. TypeScript 在服务端的意义
| 收益 | 说明 |
|---|---|
| 协作与重构安全带 | 改字段名有编译器挡一程 |
| 与前端同构 | 少写一份「口头约定」 |
| 文档感 | 类型即注释(仍要补充运行时校验) |
局限:
- 编译通过 ≠ 运行正确(断言
as可以骗人) - 性能与资源管理仍是运行时问题,类型帮不上
3. 适合什么 / 不适合什么
| 适合 | 不适合 |
|---|---|
| BFF、聚合接口、WebSocket | 重 CPU、复杂强事务核心域(优先 Java) |
| Electron 本地服务、前端同构工具链 | 「为了用 Node 而用 Node」重写整套 ERP |
| 实时通知、轻网关 | 无类型纪律的大团队长期硬扛中大型域 |
| 设备旁路、本地文件/串口桥 | 强一致库存核心(可做前端,权威在 Java) |
4. 我为什么用 Node(TS)
- 前端 Vue、桌面 Electron 已在栈内,本地服务与 BFF 同语言最省事
- 和 Java 分工:Java 管域与库表,Node 管靠近端的聚合与实时
- 不为炫技上 Nest 全家桶;场景简单就 Express/Fastify + TS
和 MES / 桌面的关系
上位机(Electron)需要本地进程:采数、转协议、落临时文件——Node 很合适;
工单权威状态、追溯查询仍回 Java API。
下一篇:03 框架与生态