HomeAboutLinkArchivehi灯泡

Node复习文档二

Node

Child process 子进程

创建子进程的4种方式。

spawn() - 最通用的方式

exec() - 执行命令并获取输出

execFile() - 执行可执行文件

fork() - 专用的 Node.js 进程

实际应用场景

场景1:CPU密集型任务分流

场景2:实时日志处理。

场景3:视频转码服务

性能优化技巧

调试和监控

集成任务队列系统

子进程是 Node.js 中处理 CPU 密集型任务、系统命令执行和并行处理的强大工具。正确使用可以显著提升应用性能和可靠性。

Cluster 集群

解决了Node.js 单线程的瓶颈,


                     +-------------------+
                     |     Master进程     |
                     |   (PID: 1000)     |
                     |                   |
                     |  • 创建worker     |
                     |  • 管理worker状态  |
                     |  • 负载均衡       |
                     +---------+---------+
                               |
              +----------------+-----------------+
              |                |                 |
    +---------v------+ +-------v-------+ +------v--------+
    |   Worker 1     | |   Worker 2    | |   Worker 3    |
    |   (PID: 1001)  | |  (PID: 1002)  | |  (PID: 1003)  |
    |                | |               | |               |
    |  • 处理请求    | |  • 处理请求    | |  • 处理请求    |
    |  • 独立内存    | |  • 独立内存    | |  • 独立内存    |
    |  • 独立事件循环 | |  • 独立事件循环 | |  • 独立事件循环 |
    +----------------+ +---------------+ +---------------+
    
    所有worker共享同一个端口(3000)
    操作系统进行负载均衡

    
特性	Cluster	Child Process	Worker Threads
进程/线程	多进程	多进程	多线程
内存隔离	✅ 完全隔离	✅ 完全隔离	❌ 共享内存
启动开销	高	高	低
通信成本	IPC(慢)	IPC(慢)	共享内存(快)
稳定性	一个崩溃不影响其他	一个崩溃不影响其他	一个崩溃可能影响全部
适用场景	HTTP服务器、多核利用	执行命令、运行脚本	CPU密集型计算

实际应用场景

高性能Web服务器

Socket.IO 集群.

任务处理集群.

高级特性(共享端口原理).

自定义负载均衡.

生产环境最佳实践

完整的生产配置

使用 commander.js(最流行的CLI框架)

交互式命令行工具 使用 inquirer.js

终端美化 使用 chalk 和 ora

实际场景:两者配合使用

场景:项目脚手架工具.

另一个场景:配置管理工具

方面	commander.js	inquirer.js
主要用途	命令行参数解析和命令定义	交互式用户界面
使用场景	工具被其他脚本调用时	工具被人类用户直接使用时
输入方式	命令行一次性输入	交互式逐步输入
适合场景	CI/CD、自动化脚本、批处理	配置向导、安装程序、问答式工具
输出方式	直接输出结果	根据用户输入动态响应
用户体验	快速、高效、适合自动化	友好、引导式、适合新手
复杂度	适合复杂命令结构	适合复杂输入逻辑

什么时候用 commander.js?

// ✅ 适合:脚本调用、自动化、已有明确参数.

// 例如:构建工具、部署脚本、代码生成器.

什么时候用 inquirer.js?

// ✅ 适合:用户交互、配置向导、安装程序.

// 例如:项目初始化、配置设置、问卷调查.

什么时候两者都用?

// ✅ 适合:既有命令行参数支持,又有交互模式.

// 例如:现代CLI工具(create-react-app、vue-cli等).

两者结合可以创建既适合自动化又适合交互的现代CLI工具

the end.