欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js之readline模塊的使用詳解

 更新時(shí)間:2019年03月25日 10:09:47   作者:jefferyE  
這篇文章主要介紹了Node.js之readline模塊的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

什么是readline

readline允許從可讀流中以逐行的方式讀取數(shù)據(jù),比如process.stdin等。 在node.js命令行模式下默認(rèn)引入了readline模塊,但如果是使用node.js運(yùn)行腳本的話,則需要自己通過(guò)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或通過(guò)一個(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來(lái)防止光標(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('你今年多大了?\n', 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, 或者 \r\n)時(shí)觸發(fā),即在用戶輸入后,按了回車或者返回鍵時(shí)觸發(fā)該事件??梢杂脕?lái)監(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ā)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Node.js定時(shí)任務(wù)之node-schedule使用詳解

    Node.js定時(shí)任務(wù)之node-schedule使用詳解

    這篇文章主要介紹了Node.js定時(shí)任務(wù)之node-schedule使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 使用pm2部署node生產(chǎn)環(huán)境的方法步驟

    使用pm2部署node生產(chǎn)環(huán)境的方法步驟

    這篇文章主要介紹了使用pm2部署node生產(chǎn)環(huán)境的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • 在Ubuntu系統(tǒng)上安裝Node.JS的教程

    在Ubuntu系統(tǒng)上安裝Node.JS的教程

    這篇文章主要介紹了在Ubuntu系統(tǒng)上安裝Node.JS的教程,Node.JS的高性能V8解釋器運(yùn)行及異步機(jī)制為其帶來(lái)了巨大的人氣,需要的朋友可以參考下
    2015-10-10
  • Express框架之connect-flash詳解

    Express框架之connect-flash詳解

    本篇文章主要介紹了Express框架之connect-flash詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 詳解基于Koa2開發(fā)微信二維碼掃碼支付相關(guān)流程

    詳解基于Koa2開發(fā)微信二維碼掃碼支付相關(guān)流程

    這篇文章主要介紹了詳解基于Koa2開發(fā)微信二維碼掃碼支付相關(guān)流程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • NodeJS 實(shí)現(xiàn)手機(jī)短信驗(yàn)證模塊阿里大于功能

    NodeJS 實(shí)現(xiàn)手機(jī)短信驗(yàn)證模塊阿里大于功能

    這篇文章主要介紹了NodeJS 實(shí)現(xiàn)手機(jī)短信驗(yàn)證模塊阿里大于功能,需要的朋友可以參考下
    2017-06-06
  • Node?ORM項(xiàng)目中使用Sequelize實(shí)例詳解

    Node?ORM項(xiàng)目中使用Sequelize實(shí)例詳解

    這篇文章主要為大家介紹了Node?ORM項(xiàng)目中使用Sequelize實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 搭建簡(jiǎn)單的nodejs http服務(wù)器詳解

    搭建簡(jiǎn)單的nodejs http服務(wù)器詳解

    本篇文章主要介紹了搭建簡(jiǎn)單的nodejs服務(wù)器詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Node.js常用三大模塊之path模塊

    Node.js常用三大模塊之path模塊

    在node.js中常用的三大模塊中還有一個(gè)是path模塊,主要是為了便利用戶處理路徑問(wèn)題,如果我們?cè)谝胛募臅r(shí)候經(jīng)常會(huì)受到../和./的干擾,那么這個(gè)path模塊將會(huì)很好的幫助你
    2022-09-09
  • npm?does?not?support?Node.js問(wèn)題的解決辦法

    npm?does?not?support?Node.js問(wèn)題的解決辦法

    這篇文章主要給大家介紹了關(guān)于npm?does?not?support?Node.js問(wèn)題的解決辦法,文中通過(guò)代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-10-10

最新評(píng)論