摘要:控制臺結果顯示請輸入當使用創建實例時,,如果輸入流為或者,則寫入數據到輸出流。恢復輸入流事件調用方法時會觸發該事件,或者輸入流接收到結束事件。關閉輸入流退出當前進程該事件在系統上不起作用當使用將進程移動到后臺時,事件將會被觸發。
什么是readline
readline允許從可讀流中以逐行的方式讀取數據,比如process.stdin等。
在node.js命令行模式下默認引入了readline模塊,但如果是使用node.js運行腳本的話,則需要自己通過require("readline")方式手動引入該模塊。
??首先、創建一個接口實例,提供一個Object類型的參數。參數如下:
input: 監聽的可讀流(必需)
output: 寫入readline的可寫流(必需)
completer: 用于 Tab 自動補全的可選函數(不常用)
terminal: 如果希望 input 和 output 流像 TTY 一樣對待,那么傳遞參數 true ,并且經由 ANSI/VT100 轉碼。 默認情況下檢查 isTTY 是否在 output 流上實例化。(不常用)
historySize: 保留行歷史紀錄最大值,為了禁用該值被設置為0,默認為30,只有在terminal被設置為true或通過一個內部輸出檢查時,這個選項才有作用,否則歷史緩存機制不會初始化。(不常用)
const readLine = require("readline"); let rl = readLine.createInterface(process.stdin, process.stdout);第二種方式:可以傳入其他非必需參數
const readLine = require("readline"); let rl = readLine.createInterface({ input: process.stdin, output: process.stdout, // 其他參數省略 })實例
const readLine = require("readline"); let rl = readLine.createInterface({ input: process.stdin, output: process.stdout, prompt: "> 請輸入" }) // 調用 rl.prompt(); // 控制臺結果顯示:>請輸入
注意:一旦該代碼被調用,Node.js程序將不會終止知道readline接口被關閉,因為接口會在輸入流中不停的等待數據。
方法以下所有的實例均依據如下rl所創建:
const readLine = require("readline"); let rl = readLine.createInterface({ input: process.stdin, output: process.stdout })
??設置提示符,當你使用node運行該文件,并且調用rl.prompt()時,會在終端看到你設置的提示prompt,即“> 請輸入”
rl.setPrompt("> 請輸入")
注意:該方法和上面的實例參數配置是一樣的效果
??為用戶輸入準備好readline,將現有的setPrompt選項放到新的一行,讓用戶有一個新的地方開始輸入。將preserveCursor設為true來防止光標位置被重新設定成0。
??如需要換行輸入,即在新的一行,輸入信息,可在prompt中加入n。
rl.prompt(); // 控制臺結果顯示:>請輸入
??當使用readline.createInterface()創建實例時,,如果輸入流為null或者undefined,則寫入數據到輸出流。
??key是一個表示鍵序列的字面量對象,如果終端是TTY,則可用。
rl.write("Delete me!"); // Simulate ctrl+u to delete the line written previously rl.write(null, {ctrl: true, name: "u"});
??預先制定提示內容query,將會在用戶輸入被應答后,觸發執行指定的回掉函數callback。
rl.question("你今年多大了? ", function(prompt) { console.log("這是你輸入的回答結果:" + prompt); rl.close(); })
??暫停readline的輸入流,可以恢復,rl.resume()、rl.write()、rl.question()和rl.prompt()均可以恢復該輸入流。
??調用該方法會觸發pause事件。
??恢復readline的輸入流。
??調用該方法會觸發resume事件。
??關閉readline創建的實例,不控制輸入輸出流。
??調用該方法會觸發close事件。
??無論何時,在輸入流接收了一個行結束符(n, r, 或者 rn)時觸發,即在用戶輸入后,按了回車或者返回鍵時觸發該事件。可以用來監聽用戶輸入。
rl.on("line", function (line) { console.log("這是用戶輸入的內容:" + line); })
??輸入流被暫停時觸發,即調用了rl.pause(),或者沒有暫停輸入流,在收到 SIGCONT/SIGINT,且readline.Interfacce實例上并沒有注冊SIGCONT/SIGINT監聽器時,也會被觸發,并且如果輸入流在收到SIGTSIP之前就已經被暫停了,那么該事件也不會觸發。
rl.on("pause", function() { console.log("暫停輸入流...") })
??輸入流重新啟動時被觸發,即調用了rl.resume()、或者rl.write()、rl.question()和rl.prompt()。
rl.on("resume", function() { console.log("恢復輸入流...") })
??調用rl.close()方法時會觸發該事件,或者輸入流接收到“結束”事件。以下的任意一種情況都會觸發close事件。
一旦close事件被觸發,則認為readline.Interaface實例已經終止。
1)、rl.close()方法被調用后,readline.Interaface實例便會放棄輸入輸出流的控制權。
2)、輸入流接收到自己的“end”事件。
3)、輸入流接收到
4)、輸入流接收到
5)、EOT:定界符,即輸入單個或多個“>”,并按下回車時。
rl.on("close", function() { console.log("關閉輸入流..."); process.exit(0); // 退出當前進程 })
??當使用
??如果輸入流在收到SIGTSIP之前就已經被暫停了,那么該事件就不會觸發。
??當輸入流收到
??當輸入流收到
??如果輸入在進程被發送到后臺之前就已經被暫停了,那么’pause’和’SIGCONT’事件就將不會被觸發。
參見官方文檔
參考案例看笑話
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/95416.html
摘要:使用模塊逐行讀取流數據創建對象在模塊中,通過對象的使用來實現逐行讀取流數據的處理。屬性值為一個可用來寫入流數據的對象,用于指定數據的輸出目標。屬性值為一個函數,用于指定補全處理。 1. 使用readline模塊逐行讀取流數據 1.1. 創建Interface對象 在readline模塊中,通過Interface對象的使用來實現逐行讀取流數據的處理。因此首先要創建Interface對象,...
摘要:我們的小項目就初始化成功了,就可以認真思考代碼了首先分析糗事百科我們打開糗事百科會發現它的還是很簡單,由于我們只是爬取段子所以如下,就是頁數。 Node命令行工具開發【看段子】 你有沒有上班想看笑話卻又怕領導發現的經歷?現在我們就用幾十行代碼寫一個命令行看笑話段子的小程序,從此無需擔心領導的視察。這篇文章和上一篇差不多都是命令行小工具開發,不過本篇更偏向于小爬蟲的開發 總覽:命令行看段...
摘要:不能用于機器學習太慢幻覺矩陣操作太難有函數庫啊,比如只能用于前端開發開發者笑了機器學習庫都是開發者機器學習庫神經網絡神經網絡自然語言處理卷積神經網絡一系列庫神經網絡深度學習我們將使用來實現線性回歸,源代碼在倉庫。 譯者按: AI時代,不會機器學習的JavaScript開發者不是好的前端工程師。 原文: Machine Learning with JavaScript : Part 1 ...
摘要:用寫編程題的核心在的接口,讀取輸入行,模塊提供了一個接口,用于從可讀流如讀取數據,每次讀取一行。五總結通過以上這種方式,應該能完成大部分的在線編程題,有需要的童鞋可以試試看。 一.js的控制臺輸入做各大公司的在線編程題,一般都有輸入輸出,傳統的js不能完成讀取輸入的功能,這時候為了繼續用js寫編程題,只能借助node.js來進行在線筆試的輸入輸出,下面具體來說說這個問題。 用node....
閱讀 3295·2023-04-26 02:42
閱讀 799·2021-10-09 09:41
閱讀 3242·2021-09-06 15:02
閱讀 760·2019-08-26 10:45
閱讀 488·2019-08-23 15:53
閱讀 747·2019-08-22 18:10
閱讀 557·2019-08-22 18:01
閱讀 3523·2019-08-22 17:34