2026-04-01 19:12:35
在 Node.js 中,Process 模块通过昌烂如全局对象 process 提供标准输入(stdin)的监听功能,无需额外引入模块即可捕获终端输入数据。以下是耐启具体实现方法及示例:
一、核心方法:监听 data 事件通过 process.stdin.on('data', callback) 监听终端输入,当用户历前按下 [Enter] 键时触发回调函数,获取输入内容:
process.stdin.on('data', function (data) { console.log('输入内容:', data.toString().trim()); // 去除末尾换行符});创建文件在项目目录(如 chapter06)下新建 demo6-6.js,添加以下代码:
/ * 测试获取终端输入 */process.stdin.on('data', function (data) { console.log('捕获的输入:', data.toString().trim());});运行程序在终端执行命令:
node demo6-6.js程序启动后,终端会显示闪烁光标,等待输入。
输入数据输入 123456 并按下 [Enter] 键,终端输出如下:
捕获的输入: 123456

输入触发条件必须按下 [Enter] 键才会触发 data 事件,未按下前输入内容不会传递。
数据类型处理
输入内容默认以 Buffer 形式传递,需通过 toString() 转换为字符串。
使用 trim() 避免换行符影响后续逻辑(如字符串拼接或数值转换)。
退出程序若需终止输入监听,可通过 [Ctrl] + [C] 强制退出,或调用 process.exit():
process.stdin.on('data', function (data) { if (data.toString().trim() === 'exit') { process.exit(); // 输入 "exit" 时退出程序 } console.log('输入内容:', data.toString().trim());});交互式命令行工具结合 readline 模块实现更复杂的输入处理(如命令历史、自动补全):
const readline = require('readline');const rl = readline.createInterface({ input: process.stdin, output: process.stdout});rl.question('请输入用户名:', (answer) => { console.log(`欢迎, ${answer}!`); rl.close();});实时数据处理持续监听输入并实时响应(如计算器、聊天机器人):
process.stdin.on('data', (data) => { const input = parseFloat(data.toString().trim()); if (!isNaN(input)) { console.log(`输入数字的平方: ${input * input}`); }});通过 Process 模块的 stdin 功能,开发者可以轻松实现终端与 Node.js 程序的双向交互,为命令行工具开发提供基础支持。