背景目前在开发ohh-cli脚手架,当中有用到了inquirer来实现命令行的交互;在好奇心的驱动下,想去钻研下它的执行和原理。
知识点readline/events/stream/ansi-escapes/rxjs指标把握命令行交互的实现,并实现一个可交互的列表
一、readline的实现办法和原理1. readlie介绍node的内置库,次要是治理输出流;监听键盘上所有按钮的操作;node官网的形容:https://nodejs.org/dist/lates...
The node:readline module provides an interface for reading data from a Readable stream (such as process.stdin) one line at a time.翻译:readline模块提供了一个接口,用于每次一行从可读流(如process.stdin)读取数据。2.readlie的应用readlie.js
const readline = require ('readline');const rl = readline.createInterface({ input: process.stdin, // ( process.stdin:零碎输出流 ); output: process.stdout // ( process.stdout: 零碎输入流 );})// 交互命令rl.question('your name:', answer => { console.log(answer); rl.close(); // readline 不会主动敞开,须要调用命令敞开})node执行js
your name:ohhohhreadline 是依据传入的输出流信息,逐行读取,按回车后,认为输出信息曾经完结;再将输出流的信息传入到输入流output中,进行展现;
3.readline源码重点浏览3.1 readlie的整个过程的筹备工作(1) 强制将函数转化为构造函数
functuon createInterface(input, output, completer, terminal) { return Interface(input, output, completer, terminal);}function Interface(input, output, completer, terminal) { // Instanceof判断一个对象的正确类型,外部机制是通过原型链来判断的,测试一个对象在其原型链中是否存在一个构造函数的prototype属性。 if(!(this instanceof Interface)) { // false 就强制转化 return new Interface(input, output, completer, terminal) }}(2) readlie如何去做事件监听的
...