什么是Readline
Readline是Node.js里實現(xiàn)標準輸入輸出的封裝好的模塊急迂,通過這個模塊我們可以以逐行的方式讀取數(shù)據(jù)流制圈。
使用require(“readline”)可以引用模塊.
如何使用Readline
以使用為角度的話码倦,學(xué)習(xí)Readline址儒,我們需要學(xué)習(xí)它的三個部分:
創(chuàng)建Readline實例
學(xué)習(xí)里面的接口方法
學(xué)習(xí)監(jiān)聽與處理Readline事件
下面我們通過實例來學(xué)習(xí)這三個部分捕发。
實例1:我叫小明
代碼如下:
/**
* Created by vcdes on 2016/8/10.
*/// 引入readline模塊
varreadline = require('readline');
//創(chuàng)建readline接口實例
var rl = readline.createInterface({?
? ? ? ? ? ?input:process.stdin,? ??
? ? ? ? ? ?output:process.stdout
});
// question方法
rl.question("你叫什么庙楚?",function(answer){?
? ? ? ? ? ?console.log("名字是:"+answer);
// 不加close,則不會結(jié)束
rl.close();
});
// close事件監(jiān)聽
rl.on("close", function(){
// 結(jié)束程序
process.exit(0);
});
上面的實例用到了我們需要學(xué)習(xí)到的三個部分哎壳,首先使用了createInterface創(chuàng)建了一個接口實例毅待,然后使用了question方法來詢問姓名,最后是監(jiān)聽readline的close事件归榕,因為無論是方法名和事件的監(jiān)聽的名字都比較直觀尸红,關(guān)于它們的作用也能一目了然,我這里就只提了三點需要注意的:
在createInterface里,我們需要傳入標準輸入輸出作為數(shù)據(jù)的輸入輸出流
在question方法的回調(diào)函數(shù)里驶乾,我們可以獲取到用戶的輸入并進行處理邑飒,同時我們進行了close操作來結(jié)束程序循签,否則程序不會結(jié)束
在close事件的監(jiān)聽里级乐,我們執(zhí)行了process.exit(0)來使程序退出的操作,因為readline模塊只要一開始獲取用戶輸入就不會結(jié)束县匠,必須使用這種直接的方式來結(jié)束程序.
實例2:輸入與輸出
/**
* Created by vcdes on 2016/8/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("復(fù)制");
? ? ? ? ? ?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’事件,這個事件就是在用戶輸完一行乞旦,按下回車后就會觸發(fā)的事件贼穆,它會將用戶輸入的數(shù)據(jù)通過回調(diào)函數(shù)傳回來,可在此方法里處理用戶輸入的數(shù)據(jù)