国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

Node.js用readline模塊實(shí)現(xiàn)輸入輸出

2019-11-19 18:27:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

什么是Readline

Readline是Node.js里實(shí)現(xiàn)標(biāo)準(zhǔn)輸入輸出的封裝好的模塊,通過(guò)這個(gè)模塊我們可以以逐行的方式讀取數(shù)據(jù)流。使用require("readline")可以引用模塊。

如何使用Readline

以使用為角度的話,學(xué)習(xí)Readline,我們需要學(xué)習(xí)它的三個(gè)部分:

  1. 創(chuàng)建Readline實(shí)例
  2. 學(xué)習(xí)里面的接口方法
  3. 學(xué)習(xí)監(jiān)聽(tīng)與處理Readline事件

下面我們通過(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)readlineclose事件,因?yàn)闊o(wú)論是方法名和事件的監(jiān)聽(tīng)的名字都比較直觀,關(guān)于它們的作用也能一目了然,我這里就只提了三點(diǎn)需要注意的:

  1. createInterface里,我們需要傳入標(biāo)準(zhǔn)輸入輸出作為數(shù)據(jù)的輸入輸出流
  2. question方法的回調(diào)函數(shù)里,我們可以獲取到用戶的輸入并進(jìn)行處理,同時(shí)我們進(jìn)行了close操作來(lái)結(jié)束程序,否則程序不會(huì)結(jié)束
  3. 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è)新方法

  1. 方法setPromat(promat) ,就是給每一行設(shè)置一個(gè)提示符,就好比window命令行的> ,我們這里設(shè)置的是Test>
  2. promat()可以算是最重要的方法了,因?yàn)樗朋w現(xiàn)了Readline的核心作用,以行為單位讀取數(shù)據(jù),premat方法就是在等待用戶輸入數(shù)據(jù)
  3. 這里又監(jiān)聽(tīng)了'line' 事件,因?yàn)閜romat方法調(diào)用一次就只會(huì)讀取一次數(shù)據(jù),所以,在這個(gè)方法又調(diào)用了一次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)大家可以留言交流。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤翔县| 都昌县| 延长县| 横峰县| 巴里| 松溪县| 清徐县| 静乐县| 博兴县| 临湘市| 河源市| 崇明县| 玉溪市| 梅河口市| 额济纳旗| 富蕴县| 平舆县| 尚义县| 闵行区| 烟台市| 天等县| 东城区| 梁河县| 临潭县| 乳源| 昌吉市| 同江市| 宝清县| 会宁县| 晴隆县| 湘乡市| 怀来县| 西安市| 兰州市| 栾川县| 黄大仙区| 唐山市| 始兴县| 石家庄市| 兴安县| 永福县|