首頁 > web前端 > js教程 > Node.js用readline模組實作輸入輸出

Node.js用readline模組實作輸入輸出

高洛峰
發布: 2016-12-26 09:51:50
原創
1186 人瀏覽過

什麼是Readline

Readline是Node.js裡實現標準輸入輸出的封裝好的模組,透過這個模組我們可以以逐行的方式讀取資料流。使用require("readline")可以引用模組。

如何使用Readline

以使用為角度的話,學習Readline,我們需要學習它的三個部分:

創建Readline實例

學習裡面的介面方法

學習Readline實例

學習裡面的介面方法

學習。我們透過實例來學習這三個部分。


實例1:我叫小明

程式碼如下:

/**
 * Created by Administrator on 2015/9/10.
 */
// 引入readline模块
var readline = require('readline');
 
//创建readline接口实例
var rl = readline.createInterface({ 
 input:process.stdin,
 output:process.stdout
});
 
// question方法
rl.question("你叫什么?",function(answer){ 
 console.log("名字是:"+answer);
 // 不加close,则不会结束
 rl.close();
});
 
// close事件监听
rl.on("close", function(){ 
 // 结束程序
 process.exit(0);
});
登入後複製

上面的實例用到了我們需要學習到的三個部分,首先使用了createInterface創建了一個介面實例,然後使用了question方法來詢問姓名,最後是監聽readline的close事件,因為無論是方法名稱和事件的監聽的名字都比較直觀,關於它們的作用也能一目了然,我這裡就只提了三點需要注意的:


在createInterface裡,我們需要傳入標準輸入輸出作為資料的輸入輸出流


在question方法的回調函數裡,我們可以取得到使用者的輸入並進行處理,同時我們進行了close運算來結束程序,否則程式不會結束


在close事件的監聽裡,我們執行了process.exit(0)來使程式退出的操作,因為readline模組只要一開始取得使用者輸入就不會結束,必須使用這種直接的方式來結束程式

實例2:輸入與輸出

/**
 * Created by Administrator on 2015/9/10.
 */
// 引入readline模块
var readline = require('readline');
 
var rl = readline.createInterface({ 
 input: process.stdin,
 output: process.stdout
});
 
rl.on('line', function(line){ 
 switch(line.trim()) {
  case 'copy':
   console.log("复制");
   break;
  case 'hello':
   rl.write("Write");
   console.log('world!');
   break;
  case 'close':
   rl.close();
   break;
  default:
   console.log('没有找到命令!');
   break;
 }
});
rl.on('close', function() { 
 console.log('bye bye');
 process.exit(0);
});
登入後複製

'line'事件,這個事件就是在使用者輸完一行,按下回車後就會觸發的事件,它會將使用者輸入的資料透過回呼函數傳回來,可在此方法處理使用者輸入的資料

實例3:類似命令列的輸入輸出

var readline = require('readline'); 
var rl = readline.createInterface(process.stdin, process.stdout);
 
rl.setPrompt('Test> '); 
rl.prompt();
 
rl.on('line', function(line) { 
 switch(line.trim()) {
  case 'copy':
   console.log("复制");
   break;
  case 'hello':
   console.log('world!');
   break;
  case 'close':
   rl.close();
   break;
  default:
   console.log('没有找到命令!');
   break;
 }
 rl.prompt();
});
 
rl.on('close', function() { 
 console.log('bye bye!');
 process.exit(0);
});
登入後複製

運行截圖如下:

Node.js用readline模組實作輸入輸出

這個實例裡出現了兩個新方法


方法setPromat(promat(promat) 每一行設定一個提示符,就好比window命令行的> ,我們這裡設定的是Test>


promat()可以算是最重要的方法了,因為它才體現了Readline的核心作用,以行為單位讀取數據,premat方法就是在等待用戶輸入數據


這裡又監聽了'line' 事件,因為promat方法調用一次就只會讀取一次數據,所以,在這個方法又調用了一次promat方法,這樣就可以繼續讀取使用者輸入,從而達到一種命令列的效果


附錄

這裡只寫了三個比較簡單的例子來說明Readline的使用,如果還想要了解更多的關於Readline的用法以及更多的方法和事件,可以去看官方的API

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或工作能帶來一定的幫助,如果有疑問大家可以留言交流。

更多Node.js用readline模組實作輸入輸出相關文章請關注PHP中文網! 🎜
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板