记得大一刚开始接触C语言的时候,对scanf()printf()函数印象可深刻了,自己键盘输入的值可以和电脑上的程序交互,哇塞,这也太神奇了吧!?!
哈哈,没错,那时候的me就是这么木有见识…😶…

点击直入正题👇

现在学习JS,突然意识到我怎么还没有用过JS的输入输出函数呢???
请教老师后,甩过来一行代码:

# npm install readline-sync

本来觉得so easy!一行代码安装好对应的模块就解决啦~

javascript模拟键盘输入 nodejs模拟键盘输入_json


啊,这… …


一. npm使用介绍

npm 是 Node.js 的包管理工具,用来安装各种 Node.js 的扩展。在新版的Node.js已经集成了npm工具。可以通过输入 npm -v 来测试是否成功安装。命令如下,出现版本提示表示安装成功:

javascript模拟键盘输入 nodejs模拟键盘输入_javascript模拟键盘输入_02


使用npm安装模块的命令也特别简单:

( -g 代表全局安装)

# npm install <Module Name> -g

二. readline模块介绍

Readline是Node.js里实现标准输入输出的封装好的模块,通过这个模块我们可以以逐行的方式读取数据流。官方文档地址:

Node.js v14.7.0 Documentation - Readline

javascript模拟键盘输入 nodejs模拟键盘输入_js_03

三. 正确配置npm安装readline

分析一下刚才的报错信息:第一行明显说的是我们缺少一个文件名为package.json的系统文件

javascript模拟键盘输入 nodejs模拟键盘输入_javascript模拟键盘输入_04


那么我们现在来创建一下这个文件,其实就是先初始化一下你的npm:

npm init

输入代码会出现第一框的提示文字,虽然好多看不懂,但是第二句:

This utility will walk you through creating a package.json file.

翻译一下就是:此实用程序将引导您完成创建包package.json文件。 这不正好就是咱们缺的嘛!

javascript模拟键盘输入 nodejs模拟键盘输入_js_05


然后他会引导你一步一步设置属于你的npm包文件,看上图第二个框:有什么名字,版本,描述的设置,实测可以一路下一步…其实哈,还有一个更偷懒的方法:

npm init -y

加个 -y 你就会发现,系统直接帮我们填好了刚才的设置项:

javascript模拟键盘输入 nodejs模拟键盘输入_nodejs_06


执行完命令后可以看到用户路径下多了一个package.json文件。再来试试安装命令,结果还是不行:

javascript模拟键盘输入 nodejs模拟键盘输入_npm_07


这是因为咱们刚才是直接让系统默认配置的package.json文件,其中的description字段和存储库字段并没有填写,现在我们在vim中手动修改一下这两个字段信息:

javascript模拟键盘输入 nodejs模拟键盘输入_json_08


第一个的description字段内容随意,不为空即可。切记第二个存储库字段并没有,需要我们自己添加,由于我们目前还是自己学习阶段,可以设置成私有项目即可。

这个时候都配置好啦,再来安装一次试试:

javascript模拟键盘输入 nodejs模拟键盘输入_json_09


莫得报错,普天同庆呀~❀❀❀

四. readline的简单使用

装好readline之后,我们来新建一个js文件,在简单使用readline之前需要先引入readline模块:

const readline = require('readline-sync');

然后给大家介绍一种最简单的使用方法:

let name = readline.question("请输入你的名字:"); 
console.log("嗨"+name+",很高兴见到你。");

javascript模拟键盘输入 nodejs模拟键盘输入_npm_10


需要注意的是一行readline语句只能接收一次用户输入,如果需要输入多个值,需要几个值就得写几行readline语句。而且输入的值默认是字符串类型。

let str = readline.question(""); 
console.log(str.split(""));

var num = readline.question("");
console.log(num);



——————OUTPUT——————
hello world
[
  'h', 'e', 'l', 'l',
  'o', ' ', 'w', 'o',
  'r', 'l', 'd'
]
21
21

当然readline的功能远远不止这些(抛砖引玉),有关readline更多的完整写法请查阅官网API:

Node.js v14.7.0 Documentation - Readline

如果有人做过牛客网的算法题的话,在JavaScript(v8 6.0.0)的执行环境下,接收测试数据用到的也是readline语句(写法更简单,也不用引入):

var num = readline();