什么是Readline
Readline是Node.js里實(shí)現(xiàn)標(biāo)準(zhǔn)輸入輸出的封裝好的模塊,通過(guò)這個(gè)模塊我們可以以逐行的方式讀取數(shù)據(jù)流。使用require("readline")可以引用模塊。
如何使用Readline
以使用為角度的話,學(xué)習(xí)Readline,我們需要學(xué)習(xí)它的三個(gè)部分:
下面我們通過(guò)實(shí)例來(lái)學(xué)習(xí)這三個(gè)部分。
實(shí)例1:我叫小明
代碼如下:
/** * Created by Administrator on 2015/9/10. */// 引入readline模塊var readline = require('readline');//創(chuàng)建readline接口實(shí)例var rl = readline.createInterface({ input:process.stdin, output:process.stdout});// question方法rl.question("你叫什么?",function(answer){ console.log("名字是:"+answer); // 不加close,則不會(huì)結(jié)束 rl.close();});// close事件監(jiān)聽(tīng)rl.on("close", function(){ // 結(jié)束程序 process.exit(0);});上面的實(shí)例用到了我們需要學(xué)習(xí)到的三個(gè)部分,首先使用了createInterface創(chuàng)建了一個(gè)接口實(shí)例,然后使用了question方法來(lái)詢問(wèn)姓名,最后是監(jiān)聽(tīng)readline的close事件,因?yàn)闊o(wú)論是方法名和事件的監(jiān)聽(tīng)的名字都比較直觀,關(guān)于它們的作用也能一目了然,我這里就只提了三點(diǎn)需要注意的:
createInterface里,我們需要傳入標(biāo)準(zhǔn)輸入輸出作為數(shù)據(jù)的輸入輸出流question方法的回調(diào)函數(shù)里,我們可以獲取到用戶的輸入并進(jìn)行處理,同時(shí)我們進(jìn)行了close操作來(lái)結(jié)束程序,否則程序不會(huì)結(jié)束close事件的監(jiān)聽(tīng)里,我們執(zhí)行了process.exit(0)來(lái)使程序退出的操作,因?yàn)?code>readline模塊只要一開(kāi)始獲取用戶輸入就不會(huì)結(jié)束,必須使用這種直接的方式來(lái)結(jié)束程序實(shí)例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("復(fù)制"); break; case 'hello': rl.write("Write"); console.log('world!'); break; case 'close': rl.close(); break; default: console.log('沒(méi)有找到命令!'); break; }});rl.on('close', function() { console.log('bye bye'); process.exit(0);});'line'事件,這個(gè)事件就是在用戶輸完一行,按下回車(chē)后就會(huì)觸發(fā)的事件,它會(huì)將用戶輸入的數(shù)據(jù)通過(guò)回調(diào)函數(shù)傳回來(lái),可在此方法里處理用戶輸入的數(shù)據(jù)
實(shí)例3:類(lèi)似命令行的輸入輸出
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("復(fù)制"); break; case 'hello': console.log('world!'); break; case 'close': rl.close(); break; default: console.log('沒(méi)有找到命令!'); break; } rl.prompt();});rl.on('close', function() { console.log('bye bye!'); process.exit(0);});運(yùn)行截圖如下:

這個(gè)實(shí)例里出現(xiàn)了兩個(gè)新方法
setPromat(promat) ,就是給每一行設(shè)置一個(gè)提示符,就好比window命令行的> ,我們這里設(shè)置的是Test>promat()可以算是最重要的方法了,因?yàn)樗朋w現(xiàn)了Readline的核心作用,以行為單位讀取數(shù)據(jù),premat方法就是在等待用戶輸入數(shù)據(jù)promat方法,這樣就可以繼續(xù)讀取用戶輸入,從而達(dá)到一種命令行的效果附錄
這里只寫(xiě)了三個(gè)比較簡(jiǎn)單的例子來(lái)說(shuō)明Readline的使用,如果還想要了解更多的關(guān)于Readline的用法以及更多的方法和事件,可以去看官方的API
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注