Node.js全程实例
上QQ阅读APP看书,第一时间看更新

2.9 输出控制键

在很多情况下,应用程序需要模拟组合控制键操作(如复制、粘贴、撤销等)来代替用户完成一些键盘操作功能。而在Node.js平台下,通过readline模块的write()方法可以实现向控制台输出控制键的功能。

下面通过一个具体的实例向读者演示如何应用readline.write()方法实现对控制台输出的内容进行撤销操作的功能。

【代码2-9】(详见源代码目录ch02-node-console-ctrl-key.js文件)

【代码分析】

• 第04行通过console.info()方法向控制台终端输入一行内容提示文字。

• 第05~09行代码执行了加载readline模块并进行初始化定义的操作。

• 第10行代码使用readline模块的write()方法来向控制台终端写入一行文字内容。readline.write()方法的语法如下:

    readline.write(data, [key])

write()方法将参数data的内容写入控制台标准输出流,参数key是一个代表键序列的对象,当终端是一个TTY(计算机终端设备)时可用。

• 第11行通过变量timeoutLength定义了一段时间间隔(时长为3秒)。

• 第12~15行借助setTimeout()方法实现了经过一段时间延迟后,通过第14行中的rl.write()方法执行向控制台模拟输出撤销操作快捷键并删除之前写入的一行文字内容的功能;其中rl.write()方法的key参数为一个JSON对象({ctrl:true, name:'u'}),该对象设定了一个组合控制键“Ctrl+U”,该组合控制键可以实现撤销上一步操作的功能。

下面在控制台中测试该代码实例,具体效果如图2.9和图2.10所示。

图2.9 向控制台输出组合控制键(1)

图2.10 向控制台输出组合控制键(2)

从图2.9和图2.10中的结果可以看到,图2.9中通过readline.write()方法向控制台终端写入的数据,在经过一段时间(3s)延迟后,再次通过readline.write()方法向控制台终端写入具有撤销操作的组合控制键(Ctrl+U)后,实现了删除数据的操作。