NodeJS基础:readline模块的使用

来源:互联网 发布:进出口海关数据 编辑:程序博客网 时间:2024/05/01 20:28

nodeJs的IO交互

使用的模块是nodejs的readline模块

官方文档

什么是Readline

Readline是Node.js里实现标准输入输出的封装好的模块,通过这个模块我们可以以逐行的方式读取数据流。使用require(“readline”)可以引用模块。

如何使用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);});

    类似命令行的输入出

    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 输入暂停.');});

    事件

    事件:’line’

    function (line) {}

    在 input 流接受了一个 \n 时触发,通常在用户敲击回车或者返回时接收。 这是一个监听用户输入的利器。

    example:

    rl.on('line', (cmd) => {  console.log(`You just typed: ${cmd}`);});

    事件:’pause’

    function () {}

    不论何时,只要输入流被暂停就会触发。
    同样当输入流未被暂停,但收到 SIGCONT 也会触发。 (详见 SIGTSTP 和 SIGCONT 事件)

    example:

    rl.on('pause', function() {  console.log('Readline 输入暂停.');});

    事件: ‘resume’

    function () {}

    不论何时,只要输入流重新启用就会触发。
    example:

    rl.on('resume', function() {  console.log('Readline 恢复.');});

    事件:’close’

    function () {}

    当 close() 被调用时触发。
    当 input流接收到”结束”事件时也会被触发. 一旦触发,应当认为Interface实例 “结束” . 例如, 当input流接收到^D时, 分别被认为EOT.
    当 input 流接收到一个 ^C 时,即使没有 SIGINT 监听器,也会触发这个事件,分别被称为 SIGINT 。
    example:

    rl.on('close',function(){  console.log('欢迎下次再来');  process.exit(0);});

    如果还想要了解更多的关于Readline的用法以及更多的方法和事件,可以去看官方文档

    转载请标明出处:http://blog.csdn.net/divide_

    0 0
    原创粉丝点击