一,你可以选择在正确的分类下去提问,这样知道你问题答案的人才会多一些,回答的人也会多些。
二,您可以到与您问题相关专业网站论坛里去看看,那里聚集了许多专业人才,一定可以为你解决问题的。
三,你可以向你的网上好友问友打听,他们会更加真诚热心为你寻找答案的,甚至可以到相关网站直接搜索.
如何使用Readline
创建Readline实例
学习里面的接口方法
学习监听与处理Readline事件
创建Readline实例
readline.createInterface(options)
创建一个readline的接口实例. 接受一个Object类型参数,可传递以下几个值:
input - 要监听的可读流 (必需)
output - 要写入 readline 的可写流 (必须).
completer - 用于 Tab 自动补全的可选函数。(不常用)
terminal - 如果希望 input 和 output 流像 TTY 一样对待,那么传递参数 true ,并且经由 ANSI/VT100 转码。 默认情况下检查 isTTY 是否在 output 流上实例化。(不常用)
var readline = require(‘readline’)
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
接口
rl.close()
关闭接口实例 (Interface instance), 放弃控制输入输出流。”close” 事件会被触发
rl.pause()
暂停 readline 的输入流 (input stream), 如果有需要稍后还可以恢复。
rl.prompt([preserveCursor])
为用户输入准备好readline,将现有的setPrompt选项放到新的一行,让用户有一个新的地方开始输入。将preserveCursor设为true来防止光标位置被重新设定成0。
rl.question(query, callback)
预先提示指定的query,然后用户应答后触发指定的callback。 显示指定的query给用户后,当用户的应答被输入后,就触发了指定的callback
rl.resume()
恢复 readline 的输入流 (input stream).
rl.setPrompt(prompt)
设置提示符,例如当你在命令行运行 node 时,你会看到(prompt)
rl.write(data[, key])
第一个简单的readline案例
var readline = require('readline')var rl = readline.createInterface(process.stdin,process.stdout)
// question方法
rl.question('what is you name? ',function(answer){
console.log('my name is ' + answer)
//不加close,则不会结束
rl.close()
})
// close事件监听
rl.on('close',function(){
console.log('欢迎下次再来')
process.exit(0)
})123456789101112131415
类似命令行的输入出
var readline = require('readline')var rl = readline.createInterface(process.stdin,process.stdout)
rl.setPrompt('please>')
rl.prompt()
rl.on('line',(line)=>{
switch(line.trim()){
case 'pause':
rl.pause()
break
case 'copy':
console.log('复制')
break
case 'hello':
rl.write("Write")
console.log('world!')
break
default:
console.log('没有找到命令')
break
}
rl.prompt()
})
rl.on('close',function(){
console.log('欢迎下次再来')
process.exit(0)
})
rl.on('pause', function() {
console.log('Readline 输入暂停.')
})12345678910111213141516171819202122232425262728293031
事件
事件:’line’
function (line) {}
在 input 流接受了一个 \n 时触发,通常在用户敲击回车或者返回时接收。 这是一个监听用户输入的利器。
example:
rl.on('line', (cmd) =>{console.log(`You just typed: ${cmd}`)
})1234
事件:’pause’
function () {}
不论何时,只要输入流被暂停就会触发。
同样当输入流未被暂停,但收到 SIGCONT 也会触发。 (详见 SIGTSTP 和 SIGCONT 事件)
example:
rl.on('pause', function() {console.log('Readline 输入暂停.')
})1234
事件: ‘resume’
function () {}
不论何时,只要输入流重新启用就会触发。
example:
rl.on('resume', function() {console.log('Readline 恢复.')
})1234
事件:’close’
function () {}
当 close() 被调用时触发。
当 input流接收到”结束”事件时也会被触发. 一旦触发,应当认为Interface实例 “结束” . 例如, 当input流接收到^D时, 分别被认为EOT.
当 input 流接收到一个 ^C 时,即使没有 SIGINT 监听器,也会触发这个事件,分别被称为 SIGINT 。
example:
rl.on('close',function(){console.log('欢迎下次再来')
process.exit(0)
})12345
'use strict'
const readline = require("readline-sync")
let money = 1000
let ATM = function () {
console.log("输入账号")
let accout = readline.question("")
console.log("输入密码")
let passwordatm = parseInt(readline.question(""))
if (login(accout, passwordatm) == true) {
console.log("1查看余额2取钱3存钱")
let cho = readline.question("") - 0
switch (cho) {
case 1:
console.log("还有" + money)
break
case 2:
console.log("输入金额")
let getmoney = readline.question("") - 0
getmo(getmoney)
break
case 3:
console.log("输入金额")
let savemoney = readline.question("") - 0
save(savemoney)
break
}
} else {
console.log("输入错误")
}
}
function login(username, pasw) {
if ((username == "zhangsan") &&(pasw == 123)) {
return true
} else {
return false
}
}
let getmo = function (getmoney) {
if (money >= getmoney) {
money -= getmoney
console.log("取款" + getmoney, "还剩" + money)
return true
}
return false
}
let save = function (savemoney) {
money += savemoney
console.log("存款成功,余额:" + money)
}
ATM()