Node.js中readline模塊實現(xiàn)終端輸入
1 概述
readline是Node.js里實現(xiàn)標準輸入輸出的封裝好的模塊,通過這個模塊我們可以以逐行的方式讀取數(shù)據(jù)流。使用require("readline")可以引用模塊。
使用readline步驟:
1、引入:require('readline')
2、創(chuàng)建readline對象(接口)
3、調用接口的相關方法
4、監(jiān)聽和處理readline事件
示例代碼:
// 引入readline模塊
const readline = require("readline");
// 創(chuàng)建readline接口實例
let r1 = readline.createInterface({
input: process.stdin,
output: process.stdout
})
//調用接口方法
r1.question("你叫什么名字\t", function (answer) {
console.log("我的名字是:", answer);
// 不加close,則不會結束
r1.close();
})
//close事件監(jiān)聽
r1.on("close", function () {
// 結束程序
process.exit(0);
})

2 readline的使用
第一步:createInterface創(chuàng)建了一個接口實例
第二步:調用相關方法,如question方法輸入
第三步:監(jiān)聽readline的close事件
注意:
1、在createInterface里,需要傳入標準輸入輸出作為數(shù)據(jù)的輸入輸出流
2、在question方法的回調函數(shù)里,可以獲取到用戶的輸入并進行處理,同時進行了close操作來結束程序,否則程序不會結束
3、在close事件的監(jiān)聽里,執(zhí)行了process.exit(0)來使程序退出的操作,因為readline模塊只要一開始獲取用戶輸入就不會結束,必須使用這種直接的方式來結束程序
3 示例1:輸入輸出
示例代碼:
// 引入readline模塊
let readline = require("readline");
// 創(chuàng)建接口實例
let r1 = readline.createInterface({
input: process.stdin,
output: process.stdout
})
// 調用接口方法
r1.on("line", function (line) {
switch (line.trim()) {
case "copy":
console.log("復制");
break;
case "hello":
r1.write("Hello ");
console.log("World!");
break;
case "close":
r1.close();
break;
default:
console.log("沒有找到命令!");
break;
}
})
// close事件監(jiān)聽
r1.on("close", function () {
console.log("再見");
process.exit(0);
})

注意:'line’事件,這個事件就是在用戶輸完一行,按下回車后就會觸發(fā)的事件,它會將用戶輸入的數(shù)據(jù)通過回調函數(shù)傳回來,可在此方法里處理用戶輸入的數(shù)據(jù)
4 示例2:模擬命令行的輸入輸出
示例代碼:
// 引入readline模塊
let readline = require("readline");
// 創(chuàng)建接口實例
let r1 = readline.createInterface({
input: process.stdin,
output: process.stdout
})
// 方法方法setPromat(promat) ,就是給每一行設置一個提示符,
// 就好比window命令行的> ,這里設置的是Test>
r1.setPrompt("Test> ");
// prompt()是最重要的方法,因為它體現(xiàn)了readline的核心作用,
// 以行為單位讀取數(shù)據(jù),prompt方法就是在等待用戶輸入數(shù)據(jù)
r1.prompt();
// 調用接口方法
// 監(jiān)聽了'line' 事件,因為prompt方法調用一次就只會讀取一次數(shù)據(jù)
// 所以,在這個方法又調用了一次prompt方法,這樣就可以繼續(xù)讀取用戶輸入
// 從而達到一種命令行的效果
r1.on("line", function (line) {
switch (line.trim()) {
case "copy":
console.log("復制");
break;
case "hello":
console.log("World!");
break;
case "close":
r1.close();
break;
default:
console.log("沒有找到命令!");
break;
}
r1.prompt();
});
// close事件監(jiān)聽
r1.on("close", function () {
console.log("再見");
process.exit(0);
})

說明:
1、方法setPromat(promat) ,就是給每一行設置一個提示符,就好比window命令行的> ,這里設置的是Test>
2、prompt()是最重要的方法,因為它體現(xiàn)了readline的核心作用,以行為單位讀取數(shù)據(jù),prompt方法就是在等待用戶輸入數(shù)據(jù)
3、監(jiān)聽了’line’ 事件,因為prompt方法調用一次就只會讀取一次數(shù)據(jù),所以,在這個方法又調用了一次prompt方法,這樣就可以繼續(xù)讀取用戶輸入,從而達到一種命令行的效果
到此這篇關于Node.js中readline模塊實現(xiàn)終端輸入的文章就介紹到這了,更多相關Node.js 終端輸入內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Windows部署NVM并下載多版本Node.js的方法(含刪除原有Node的方法)
這篇文章主要介紹了Windows部署NVM并下載多版本Node.js的方法(含刪除原有Node的方法),文中通過圖文結合的方式講解的非常詳細,對大家了解Node.js有一定的幫助,需要的朋友可以參考下2025-01-01
從零開始學習Node.js系列教程一:http get和post用法分析
這篇文章主要介紹了從零開始學習Node.js系列教程一:http get和post用法,結合具體實例形式分析了nodejs中get與post請求的使用方法與相關注意事項,需要的朋友可以參考下2017-04-04
Node Puppeteer圖像識別實現(xiàn)百度指數(shù)爬蟲的示例
本篇文章主要介紹了Node Puppeteer圖像識別實現(xiàn)百度指數(shù)爬蟲的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02
Node.js 中的流Stream模塊簡介及如何使用流進行數(shù)據(jù)處理
Node.js中的流(Stream)模塊用于高效處理流式數(shù)據(jù),包括可讀流、可寫流、雙邊流和轉換流等,通過`fs.createReadStream`和`.pipe`方法可以方便地讀取文件并寫入控制臺或處理網(wǎng)絡請求,在實際開發(fā)中,需要注意錯誤處理、資源管理和性能優(yōu)化等問題2025-03-03
node.js中的http.request.end方法使用說明
這篇文章主要介紹了node.js中的http.request.end方法使用說明,本文介紹了http.request.end的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12

