欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么在Node.js中使用readline模塊

今天就跟大家聊聊有關(guān)怎么在Node.js中使用readline模塊,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)專注于東寶企業(yè)網(wǎng)站建設(shè),響應式網(wǎng)站開發(fā),購物商城網(wǎng)站建設(shè)。東寶網(wǎng)站建設(shè)公司,為東寶等地區(qū)提供建站服務。全流程按需制作,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務

什么是readline

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

怎么使用readline

創(chuàng)建實例

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

第一種方式:只傳入兩個必傳參數(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ù)省略
 })

實例

const readLine = require('readline');
 let rl = readLine.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: '> 請輸入'
 })
 // 調(diào)用
 rl.prompt(); // 控制臺結(jié)果顯示:>請輸入

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

方法

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

const readLine = require('readline');
 let rl = readLine.createInterface({
  input: process.stdin,
  output: process.stdout
 })

1、rl.setPrompt([prompt])

設(shè)置提示符,當你使用node運行該文件,并且調(diào)用rl.prompt()時,會在終端看到你設(shè)置的提示prompt,即“> 請輸入”

rl.setPrompt('> 請輸入')

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

2、rl.prompt([preserveCursor])

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

rl.prompt(); // 控制臺結(jié)果顯示:>請輸入

3、rl.write(data[, key])

當使用readline.createInterface()創(chuàng)建實例時,,如果輸入流為null或者undefined,則寫入數(shù)據(jù)到輸出流。   key是一個表示鍵序列的字面量對象,如果終端是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)

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

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

5、rl.pause()

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

6、rl.resume()

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

7、rl.close()

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

事件

1、line事件

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

rl.on('line', function (line) {
  console.log('這是用戶輸入的內(nèi)容:' + line);
 })

2、pause事件

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

rl.on('pause', function() {
  console.log('暫停輸入流...')
 })

3、resume事件

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

rl.on('resume', function() {
  console.log('恢復輸入流...')
 })

4、close事件

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

rl.on('close', function() {
  console.log('關(guān)閉輸入流...');
  process.exit(0); // 退出當前進程
 })

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

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

6、SIGINT

當輸入流收到-C命令時,我們熟知的SIGINT事件就會被觸發(fā)。如果當時并沒有注冊任何SIGINT事件監(jiān)聽器,那么當輸入流接收到SIGINT信號時,'pause'事件和'close'事件均會被觸發(fā)。

看完上述內(nèi)容,你們對怎么在Node.js中使用readline模塊有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)站欄目:怎么在Node.js中使用readline模塊
鏈接分享:http://chinadenli.net/article4/ppijie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作Google、品牌網(wǎng)站建設(shè)搜索引擎優(yōu)化、網(wǎng)站改版網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設(shè)