当前位置: 首页 > 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读书笔记——Promise
  • happypack两次报错的问题
  • Node项目之评分系统(二)- 数据库设计
  • springMvc学习笔记(2)
  • 创建一种深思熟虑的文化
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 力扣(LeetCode)22
  • 码农张的Bug人生 - 初来乍到
  • 如何实现 font-size 的响应式
  • 使用SAX解析XML
  • 算法系列——算法入门之递归分而治之思想的实现
  • 我是如何设计 Upload 上传组件的
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 扩展资源服务器解决oauth2 性能瓶颈
  • (2)Java 简介
  • (4.10~4.16)
  • (pojstep1.1.2)2654(直叙式模拟)
  • (solr系列:一)使用tomcat部署solr服务
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (笔试题)合法字符串
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (四)Linux Shell编程——输入输出重定向
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net framework 4.0中如何 输出 form 的name属性。
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .net framework4与其client profile版本的区别
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .net对接阿里云CSB服务
  • .skip() 和 .only() 的使用
  • @Service注解让spring找到你的Service bean
  • [2010-8-30]
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [C++]指针与结构体
  • [DAX] MAX函数 | MAXX函数
  • [GYCTF2020]Ez_Express