亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

node.js之readline模塊的使用

AlanKeene / 612人閱讀

摘要:控制臺(tái)結(jié)果顯示請(qǐng)輸入當(dāng)使用創(chuàng)建實(shí)例時(shí),,如果輸入流為或者,則寫入數(shù)據(jù)到輸出流。恢復(fù)輸入流事件調(diào)用方法時(shí)會(huì)觸發(fā)該事件,或者輸入流接收到結(jié)束事件。關(guān)閉輸入流退出當(dāng)前進(jìn)程該事件在系統(tǒng)上不起作用當(dāng)使用將進(jìn)程移動(dòng)到后臺(tái)時(shí),事件將會(huì)被觸發(fā)。

什么是readline

readline允許從可讀流中以逐行的方式讀取數(shù)據(jù),比如process.stdin等。
在node.js命令行模式下默認(rèn)引入了readline模塊,但如果是使用node.js運(yùn)行腳本的話,則需要自己通過require("readline")方式手動(dòng)引入該模塊。

怎么使用readline 創(chuàng)建實(shí)例

??首先、創(chuàng)建一個(gè)接口實(shí)例,提供一個(gè)Object類型的參數(shù)。參數(shù)如下:
input: 監(jiān)聽的可讀流(必需)
output: 寫入readline的可寫流(必需)
completer: 用于 Tab 自動(dòng)補(bǔ)全的可選函數(shù)(不常用)
terminal: 如果希望 input 和 output 流像 TTY 一樣對(duì)待,那么傳遞參數(shù) true ,并且經(jīng)由 ANSI/VT100 轉(zhuǎn)碼。 默認(rèn)情況下檢查 isTTY 是否在 output 流上實(shí)例化。(不常用)
historySize: 保留行歷史紀(jì)錄最大值,為了禁用該值被設(shè)置為0,默認(rèn)為30,只有在terminal被設(shè)置為true或通過一個(gè)內(nèi)部輸出檢查時(shí),這個(gè)選項(xiàng)才有作用,否則歷史緩存機(jī)制不會(huì)初始化。(不常用)

第一種方式:只傳入兩個(gè)必傳參數(shù)
  const readLine = require("readline");
  let rl = readLine.createInterface(process.stdin, process.stdout);
第二種方式:可以傳入其他非必需參數(shù)
  const readLine = require("readline");
  let rl = readLine.createInterface({
    input: process.stdin,
    output: process.stdout,
    // 其他參數(shù)省略
  })
實(shí)例
  const readLine = require("readline");
  let rl = readLine.createInterface({
    input: process.stdin,
    output: process.stdout,
    prompt: "> 請(qǐng)輸入"
  })
  // 調(diào)用
  rl.prompt(); // 控制臺(tái)結(jié)果顯示:>請(qǐng)輸入

注意:一旦該代碼被調(diào)用,Node.js程序?qū)⒉粫?huì)終止知道readline接口被關(guān)閉,因?yàn)榻涌跁?huì)在輸入流中不停的等待數(shù)據(jù)。

方法

以下所有的實(shí)例均依據(jù)如下rl所創(chuàng)建:

  const readLine = require("readline");
  let rl = readLine.createInterface({
    input: process.stdin,
    output: process.stdout
  })
1、rl.setPrompt([prompt])

??設(shè)置提示符,當(dāng)你使用node運(yùn)行該文件,并且調(diào)用rl.prompt()時(shí),會(huì)在終端看到你設(shè)置的提示prompt,即“> 請(qǐng)輸入”

  rl.setPrompt("> 請(qǐng)輸入")

注意:該方法和上面的實(shí)例參數(shù)配置是一樣的效果

2、rl.prompt([preserveCursor])

??為用戶輸入準(zhǔn)備好readline,將現(xiàn)有的setPrompt選項(xiàng)放到新的一行,讓用戶有一個(gè)新的地方開始輸入。將preserveCursor設(shè)為true來防止光標(biāo)位置被重新設(shè)定成0。
??如需要換行輸入,即在新的一行,輸入信息,可在prompt中加入n。

  rl.prompt(); // 控制臺(tái)結(jié)果顯示:>請(qǐng)輸入
3、rl.write(data[, key])

??當(dāng)使用readline.createInterface()創(chuàng)建實(shí)例時(shí),,如果輸入流為null或者undefined,則寫入數(shù)據(jù)到輸出流。
??key是一個(gè)表示鍵序列的字面量對(duì)象,如果終端是TTY,則可用。

  rl.write("Delete me!");
  // Simulate ctrl+u to delete the line written previously
  rl.write(null, {ctrl: true, name: "u"});
4、rl.question(query, callback)

??預(yù)先制定提示內(nèi)容query,將會(huì)在用戶輸入被應(yīng)答后,觸發(fā)執(zhí)行指定的回掉函數(shù)callback。

  rl.question("你今年多大了?
", function(prompt) {
    console.log("這是你輸入的回答結(jié)果:" + prompt);
    rl.close();
  })
5、rl.pause()

??暫停readline的輸入流,可以恢復(fù),rl.resume()、rl.write()、rl.question()和rl.prompt()均可以恢復(fù)該輸入流。
??調(diào)用該方法會(huì)觸發(fā)pause事件。

6、rl.resume()

??恢復(fù)readline的輸入流。
??調(diào)用該方法會(huì)觸發(fā)resume事件。

7、rl.close()

??關(guān)閉readline創(chuàng)建的實(shí)例,不控制輸入輸出流。
??調(diào)用該方法會(huì)觸發(fā)close事件。

事件
1、line事件

??無(wú)論何時(shí),在輸入流接收了一個(gè)行結(jié)束符(n, r, 或者 rn)時(shí)觸發(fā),即在用戶輸入后,按了回車或者返回鍵時(shí)觸發(fā)該事件??梢杂脕肀O(jiān)聽用戶輸入。

  rl.on("line", function (line) {
    console.log("這是用戶輸入的內(nèi)容:" + line);
  })
2、pause事件

??輸入流被暫停時(shí)觸發(fā),即調(diào)用了rl.pause(),或者沒有暫停輸入流,在收到 SIGCONT/SIGINT,且readline.Interfacce實(shí)例上并沒有注冊(cè)SIGCONT/SIGINT監(jiān)聽器時(shí),也會(huì)被觸發(fā),并且如果輸入流在收到SIGTSIP之前就已經(jīng)被暫停了,那么該事件也不會(huì)觸發(fā)。

  rl.on("pause", function() {
    console.log("暫停輸入流...")
  })
3、resume事件

??輸入流重新啟動(dòng)時(shí)被觸發(fā),即調(diào)用了rl.resume()、或者rl.write()、rl.question()和rl.prompt()。

  rl.on("resume", function() {
    console.log("恢復(fù)輸入流...")
  })
4、close事件

??調(diào)用rl.close()方法時(shí)會(huì)觸發(fā)該事件,或者輸入流接收到“結(jié)束”事件。以下的任意一種情況都會(huì)觸發(fā)close事件。
一旦close事件被觸發(fā),則認(rèn)為readline.Interaface實(shí)例已經(jīng)終止。
1)、rl.close()方法被調(diào)用后,readline.Interaface實(shí)例便會(huì)放棄輸入輸出流的控制權(quán)。
2)、輸入流接收到自己的“end”事件。
3)、輸入流接收到-C,發(fā)送SIGINT信號(hào),并且在readline.Interfacce實(shí)例上并沒有注冊(cè)SIGINT事件的監(jiān)聽器。
4)、輸入流接收到-D,發(fā)送傳輸結(jié)束信號(hào)(EOF,end-of-transmission);
5)、EOT:定界符,即輸入單個(gè)或多個(gè)“>”,并按下回車時(shí)。

  rl.on("close", function() {
    console.log("關(guān)閉輸入流...");
    process.exit(0); // 退出當(dāng)前進(jìn)程
  })
5、SIGCOUT(該事件在window系統(tǒng)上不起作用)

??當(dāng)使用-Z將Node.js進(jìn)程移動(dòng)到后臺(tái)時(shí),SIGCONT事件將會(huì)被觸發(fā)。然后可以使用 fg(1) 命令將它移動(dòng)到前臺(tái)。
??如果輸入流在收到SIGTSIP之前就已經(jīng)被暫停了,那么該事件就不會(huì)觸發(fā)。

6、SIGINT

??當(dāng)輸入流收到-C命令時(shí),我們熟知的SIGINT事件就會(huì)被觸發(fā)。如果當(dāng)時(shí)并沒有注冊(cè)任何SIGINT事件監(jiān)聽器,那么當(dāng)輸入流接收到SIGINT信號(hào)時(shí),’pause’事件和’close’事件均會(huì)被觸發(fā)。

7、SIGTSTP(該事件在window系統(tǒng)上不起作用)

??當(dāng)輸入流收到-Z命令時(shí),我們熟知的SIGTSTP事件就會(huì)被觸發(fā)。如果沒有注冊(cè)SIGTSTP事件監(jiān)聽器,那么當(dāng)輸入流收到SIGTSTP事件時(shí),Node.js進(jìn)程就將會(huì)被移動(dòng)到后臺(tái)。
??如果輸入在進(jìn)程被發(fā)送到后臺(tái)之前就已經(jīng)被暫停了,那么’pause’和’SIGCONT’事件就將不會(huì)被觸發(fā)。

參見官方文檔
參考案例看笑話

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/95416.html

相關(guān)文章

  • Node.js學(xué)習(xí)路20——readline模塊與util模塊

    摘要:使用模塊逐行讀取流數(shù)據(jù)創(chuàng)建對(duì)象在模塊中,通過對(duì)象的使用來實(shí)現(xiàn)逐行讀取流數(shù)據(jù)的處理。屬性值為一個(gè)可用來寫入流數(shù)據(jù)的對(duì)象,用于指定數(shù)據(jù)的輸出目標(biāo)。屬性值為一個(gè)函數(shù),用于指定補(bǔ)全處理。 1. 使用readline模塊逐行讀取流數(shù)據(jù) 1.1. 創(chuàng)建Interface對(duì)象 在readline模塊中,通過Interface對(duì)象的使用來實(shí)現(xiàn)逐行讀取流數(shù)據(jù)的處理。因此首先要?jiǎng)?chuàng)建Interface對(duì)象,...

    XFLY 評(píng)論0 收藏0
  • Node命令行工具開發(fā)【看段子小工具】

    摘要:我們的小項(xiàng)目就初始化成功了,就可以認(rèn)真思考代碼了首先分析糗事百科我們打開糗事百科會(huì)發(fā)現(xiàn)它的還是很簡(jiǎn)單,由于我們只是爬取段子所以如下,就是頁(yè)數(shù)。 Node命令行工具開發(fā)【看段子】 你有沒有上班想看笑話卻又怕領(lǐng)導(dǎo)發(fā)現(xiàn)的經(jīng)歷?現(xiàn)在我們就用幾十行代碼寫一個(gè)命令行看笑話段子的小程序,從此無(wú)需擔(dān)心領(lǐng)導(dǎo)的視察。這篇文章和上一篇差不多都是命令行小工具開發(fā),不過本篇更偏向于小爬蟲的開發(fā) 總覽:命令行看段...

    kelvinlee 評(píng)論0 收藏0
  • JavaScript機(jī)器學(xué)習(xí)線性回歸

    摘要:不能用于機(jī)器學(xué)習(xí)太慢幻覺矩陣操作太難有函數(shù)庫(kù)啊,比如只能用于前端開發(fā)開發(fā)者笑了機(jī)器學(xué)習(xí)庫(kù)都是開發(fā)者機(jī)器學(xué)習(xí)庫(kù)神經(jīng)網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò)自然語(yǔ)言處理卷積神經(jīng)網(wǎng)絡(luò)一系列庫(kù)神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)我們將使用來實(shí)現(xiàn)線性回歸,源代碼在倉(cāng)庫(kù)。 譯者按: AI時(shí)代,不會(huì)機(jī)器學(xué)習(xí)的JavaScript開發(fā)者不是好的前端工程師。 原文: Machine Learning with JavaScript : Part 1 ...

    gitmilk 評(píng)論0 收藏0
  • node.js做編程題

    摘要:用寫編程題的核心在的接口,讀取輸入行,模塊提供了一個(gè)接口,用于從可讀流如讀取數(shù)據(jù),每次讀取一行。五總結(jié)通過以上這種方式,應(yīng)該能完成大部分的在線編程題,有需要的童鞋可以試試看。 一.js的控制臺(tái)輸入做各大公司的在線編程題,一般都有輸入輸出,傳統(tǒng)的js不能完成讀取輸入的功能,這時(shí)候?yàn)榱死^續(xù)用js寫編程題,只能借助node.js來進(jìn)行在線筆試的輸入輸出,下面具體來說說這個(gè)問題。 用node....

    Zoom 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<