Node.js用readline模塊實現輸入輸出
什么是Readline
Readline是Node.js里實現標準輸入輸出的封裝好的模塊,通過這個模塊我們可以以逐行的方式讀取數據流。使用require("readline")可以引用模塊。
如何使用Readline
以使用為角度的話,學習Readline,我們需要學習它的三個部分:
- 創(chuàng)建Readline實例
- 學習里面的接口方法
- 學習監(jiān)聽與處理Readline事件
下面我們通過實例來學習這三個部分。
實例1:我叫小明
代碼如下:
/**
* Created by Administrator on 2015/9/10.
*/
// 引入readline模塊
var readline = require('readline');
//創(chuàng)建readline接口實例
var rl = readline.createInterface({
input:process.stdin,
output:process.stdout
});
// question方法
rl.question("你叫什么?",function(answer){
console.log("名字是:"+answer);
// 不加close,則不會結束
rl.close();
});
// close事件監(jiān)聽
rl.on("close", function(){
// 結束程序
process.exit(0);
});
上面的實例用到了我們需要學習到的三個部分,首先使用了createInterface創(chuàng)建了一個接口實例,然后使用了question方法來詢問姓名,最后是監(jiān)聽readline的close事件,因為無論是方法名和事件的監(jiān)聽的名字都比較直觀,關于它們的作用也能一目了然,我這里就只提了三點需要注意的:
- 在
createInterface里,我們需要傳入標準輸入輸出作為數據的輸入輸出流
- 在
question方法的回調函數里,我們可以獲取到用戶的輸入并進行處理,同時我們進行了close操作來結束程序,否則程序不會結束
- 在
close事件的監(jiān)聽里,我們執(zhí)行了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'事件,這個事件就是在用戶輸完一行,按下回車后就會觸發(fā)的事件,它會將用戶輸入的數據通過回調函數傳回來,可在此方法里處理用戶輸入的數據
實例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);
});
運行截圖如下:

這個實例里出現了兩個新方法
- 方法
setPromat(promat),就是給每一行設置一個提示符,就好比window命令行的> ,我們這里設置的是Test>
promat()可以算是最重要的方法了,因為它才體現了Readline的核心作用,以行為單位讀取數據,premat方法就是在等待用戶輸入數據
- 這里又監(jiān)聽了'line' 事件,因為promat方法調用一次就只會讀取一次數據,所以,在這個方法又調用了一次
promat方法,這樣就可以繼續(xù)讀取用戶輸入,從而達到一種命令行的效果
附錄
這里只寫了三個比較簡單的例子來說明Readline的使用,如果還想要了解更多的關于Readline的用法以及更多的方法和事件,可以去看官方的API
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關文章
Node.JS用純JavaScript生成圖片或滑塊式驗證碼功能
有一些Node.JS圖片生成類庫,比如node-captcha等的類庫,需要c/c++程序生成圖片??缙脚_部署不是很方便。這里介紹幾個用純JS實現的圖片驗證碼生成模塊,需要的朋友可以參考下2019-09-09
Node.js(v16.13.2版本)安裝及環(huán)境配置的圖文教程
本文主要介紹了Node.js(v16.13.2版本)安裝及環(huán)境配置的圖文教程,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-05-05

