var nodeCmd = require('node-cmd');
class consoleLog{
tableObj={
A: {
no:"1",name:"LinWit"},
B: {
no:"2",name:"zhangsan"},
C: {
no:"3",name:"lisi"}};
constructor(){
this.logReadline();
}
/**
* 用readline模块模拟控制台读取用户输入
* @param {Object|Array} tableObj 输出内容对象或数组
* @param {String[]} nameArr 指定输出列
*/
logReadline(){
const readline = require('readline');
const rl = readline.createInterface({
//初始化rl对象
input:process.stdin,
output:process.stdout
});
rl.setPrompt("> "); //定义模拟控制台命令提示符,调用时将写入 output 的提示。
rl.prompt(); //初始化模拟控制台,开启 input 流
rl.on('line',line=>{
//激活readline模块的line事件,单行数据的读取输出
switch(line.trim()){
//trim()为去除前后空白字符
case 'logTable'://在控制台输出表格
console.log("logTable 输出开始...");
let logTable=this.logTable(this.tableObj);
console.log(logTable==='logEnd'?'logTable 输出结束...':'出现未知错误');
break;
case 'code':
console.log("Node.js");
break;
case 'year':
console.log(2022);
break;
default:
console.log(line.trim()+" :输入未识别!");
break;
}
rl.prompt(); //用于保持在接收完一次输出后,继续模拟控制台命令行
}).on('close',function(){
//激活readline模块的close事件,进程结束时触发事件
console.log('###### 对话框 结束 ######');
process.exit(0); //退出进程
}).on('pause',()=>{
//激活readline模块的pause事件,输出流暂停时触发事件
console.log("###### 对话框 暂停 ######");
})
}
/**
* 在控制台输出表格
* @param {Object|Array} tableObj 输出内容对象或数组
* @param {String[]} nameArr 指定输出列
*/
logTable(tableObj,nameArr){
if(nameArr&&nameArr.length>0){
console.table(tableObj,nameArr)}
else console.table(tableObj);
return 'logEnd';
}
}
new consoleLog();
控制台输入
猜你喜欢
转载自blog.csdn.net/u010100877/article/details/125876240
今日推荐
周排行