当前位置: 首页 > news >正文

Node.js 入门教程 13 在 Node.js 中从命令行接收输入

Node.js 入门教程

Node.js官方入门教程

Node.js中文网

本文仅用于学习记录,不存在任何商业用途,如侵删

文章目录

      • Node.js 入门教程
      • 13 在 Node.js 中从命令行接收输入

13 在 Node.js 中从命令行接收输入

如何使 Node.js CLI 程序具有交互性?

从版本 7 开始,Node.js 提供了 readline 模块来执行以下操作:

在这里插入图片描述

每次一行地从可读流(例如 process.stdin 流,在 Node.js 程序执行期间该流就是终端输入)获取输入。

const readline = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
})


readline.question(`你叫什么名字?`, name => {
  console.log(`你好 ${name}!`)
  readline.close()
})

在这里插入图片描述

这段代码会询问用户名,当输入了文本并且用户按下回车键时,则会发送问候语。

question() 方法会显示第一个参数(即问题),并等待用户的输入。 当按下回车键时,则它会调用回调函数。

在此回调函数中,关闭了 readline 接口。

readline 还提供了其他几个方法,详见上面的文档链接。

如果需要密码,则最好不要回显密码,而是显示 * 符号。

最简单的方式是使用 readline-sync 软件包,其在 API 方面非常相似。

在这里插入图片描述

先安装

在这里插入图片描述

嗯,白安了

Inquirer.js 软件包则提供了更完整、更抽象的解决方案。

在这里插入图片描述

可以使用 npm install inquirer 进行安装,然后复用上面的代码如下:

在这里插入图片描述

const inquirer = require('inquirer')


var questions = [
  {
    type: 'input',
    name: 'name',
    message: "你叫什么名字?"
  }
]


inquirer.prompt(questions).then(answers => {
  console.log(`你好 ${answers['name']}!`)
})

在这里插入图片描述

感觉还是版本高了的原因

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

OK。

其实也可以在项目的package.json文件中,指定type字段为module

在这里插入图片描述

这样就可以用import了

在这里插入图片描述

Inquirer.js 可以执行许多操作,例如询问多项选择、展示单选按钮、确认等。

所有的可选方案都值得了解,尤其是 Node.js 提供的内置方案,但是如果打算将 CLI 输入提升到更高的水平,则 Inquirer.js 是更优的选择。

相关文章:

  • MyBatis-Plus中的更新操作(通过id更新和条件更新)
  • easy-rules规则引擎最佳落地实践
  • 看我如何连夜自建网站背刺我的求职对手们
  • 027.将有序数组转换为二叉搜索树
  • 第五届传智杯-初赛【B组-题解】
  • 最全面的SpringMVC教程(一)——SpringMVC简介
  • OpenCV-Python小应用(六):车道线检测
  • 微信小程序介绍
  • matlab实现MCMC的马尔可夫转换MS- ARMA - GARCH模型估计
  • 华为云桌面Workspace,让你的办公更加舒适惬意
  • 基于优先级的时间片轮转调度算法(C语言实现)
  • 43特征01——特征值特征向量: 特征多项式、特殊矩阵 的特征值与特征向量、Hamilton-Cayley 定理
  • [毕业设计]机器学习的运动目标跟踪-opencv
  • Ubuntu 软件管理学习笔记
  • python中pytest库用法详解
  • js ES6 求数组的交集,并集,还有差集
  • Linux链接文件
  • Node 版本管理
  • Promise面试题2实现异步串行执行
  • Redis中的lru算法实现
  • Unix命令
  • Vue官网教程学习过程中值得记录的一些事情
  • Yeoman_Bower_Grunt
  • 程序员该如何有效的找工作?
  • 大主子表关联的性能优化方法
  • 复习Javascript专题(四):js中的深浅拷贝
  • 前端相关框架总和
  • 区块链将重新定义世界
  • 译米田引理
  • postgresql行列转换函数
  • 阿里云API、SDK和CLI应用实践方案
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​2020 年大前端技术趋势解读
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #数学建模# 线性规划问题的Matlab求解
  • (1)STL算法之遍历容器
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (三)终结任务
  • (十一)c52学习之旅-动态数码管
  • (译) 函数式 JS #1:简介
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .net反混淆脱壳工具de4dot的使用
  • .pop ----remove 删除
  • .stream().map与.stream().flatMap的使用
  • @angular/cli项目构建--http(2)
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [C++参考]拷贝构造函数的参数必须是引用类型
  • [CSS]CSS 的背景
  • [iOS]-UIKit
  • Linux 进程管理(Centos 7)
  • 双向链表和循环链表的区别
  • CSS3盒模型display:box详解
  • Linux 重定向和管道(Centos 7)
  • 链表逆序,在原链表的基础上调整
  • 显示链表的倒数第K个值
  • Linux 存储管理(Centos 7)
  • Linux 文件查找(Centos 7)
  • 合并两个有序链表,并依然保持有序
  • ASP.NET Web API实现微信公众平台开发(二)access_token与定时任务