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

Node.js API詳解之 repl模塊用法實(shí)例分析

 更新時(shí)間:2020年05月25日 08:48:37   作者:李小強(qiáng)  
這篇文章主要介紹了Node.js API詳解之 repl模塊用法,結(jié)合實(shí)例形式分析了Node.js API中repl模塊基本功能、函數(shù)、使用方法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Node.js API詳解之 repl模塊用法。分享給大家供大家參考,具體如下:

Node.js API詳解之 repl

repl(交互式解釋器) 模塊提供了一種“讀取-求值-輸出”循環(huán)(REPL)的實(shí)現(xiàn),它可作為一個(gè)獨(dú)立的程序或嵌入到其他應(yīng)用中。
可以通過以下方式使用它:

const repl = require('repl');

Node.js 自身也使用 repl 模塊為執(zhí)行 JavaScript 代碼提供交互接口。
可以通過不帶任何參數(shù)(或使用 -i 參數(shù))地執(zhí)行 Node.js 二進(jìn)制文件來使用它:

$ node
> const a = [1, 2, 3];
undefined
> a
[ 1, 2, 3 ]
> a.forEach((v) => {
...  console.log(v);
...  });
1
2
3

repl.start([options])

說明:

該屬性的值為當(dāng)前系統(tǒng)的路徑分隔符。Windows下是:”;“ POSIX下是:”:“
repl.start() 方法創(chuàng)建并啟動(dòng)一個(gè) repl.REPLServer 實(shí)例。
如果 options 是一個(gè)字符串,則它指定了輸入提示符:
options:
prompt:要顯示的輸入提示符。默認(rèn)為 >(末尾有一個(gè)空格)
input:REPL 輸入要被讀取的可讀流。默認(rèn)為 process.stdin
output:REPL 輸出要被寫入的可寫流。默認(rèn)為 process.stdout
terminal:如果為 true,則指定 output 應(yīng)被當(dāng)作一個(gè) TTY 終端,并且可以使用 ANSI/VT100 轉(zhuǎn)義碼寫入。 默認(rèn)值為初始化時(shí) output 流的 isTTY 屬性的值。
eval: 當(dāng)解釋每行輸入時(shí)使用的函數(shù)。默認(rèn)為 JavaScript eval() 函數(shù)的異步封裝。 eval 函數(shù)出錯(cuò)時(shí)會(huì)返回 repl.Recoverable,表明輸入不完整并提示用戶完成輸入
useColors:如果為 true,則指定默認(rèn)的 writer 函數(shù)可以在 REPL 輸出中包含 ANSI 顏色風(fēng)格。 如果提供了自定義的 writer 函數(shù),則該參數(shù)無效。 默認(rèn)為 REPL 實(shí)例的 terminal 屬性的值。
useGlobal:如果為 true,則指定默認(rèn)的解釋函數(shù)使用 JavaScript global 作為上下文,而不是為 REPL 實(shí)例創(chuàng)建一個(gè)新的獨(dú)立的上下文。
ignoreUndefined:如果為 true,則指定默認(rèn)的輸出器不會(huì)輸出命令返回的 undefined 值。 默認(rèn)為 false。
writer:寫入到 output 之前,該函數(shù)被調(diào)用用來格式化每個(gè)命令的輸出。 默認(rèn)為 util.inspect()。
completer:選的函數(shù),用來自定義 Tab 鍵的自動(dòng)補(bǔ)全。
breakEvalOnSigint:當(dāng)接收到 SIGINT 時(shí)停止解釋當(dāng)前代碼,比如按下 Ctrl+C。 不能與自定義的 eval 函數(shù)同時(shí)使用。 默認(rèn)為 false。
replMode:個(gè)標(biāo)志位,指定默認(rèn)的解釋器使用嚴(yán)格模式或默認(rèn)(sloppy)模式來執(zhí)行 JavaScript 命令。 可選的值有:
repl.REPL_MODE_SLOPPY – 使用默認(rèn)模式解釋表達(dá)式。
repl.REPL_MODE_STRICT – 使用嚴(yán)格模式解釋表達(dá)式。該模式等同于在每個(gè) repl 聲明前加上 ‘use strict'
repl.REPL_MODE_MAGIC – 不推薦使用
如果 options 是一個(gè)字符串,則它指定了輸入提示符

demo:

const repl = require('repl');
// 一個(gè) Unix 風(fēng)格的提示符
repl.start('$ ');

REPLServer 類

說明:

該屬性的值為當(dāng)前系統(tǒng)的路徑分隔符。Windows下是:”;“ POSIX下是:”:“
repl.REPLServer 類繼承自 readline.Interface 類。
repl.REPLServer 的實(shí)例由 repl.start() 方法創(chuàng)建,不能直接使用 JavaScript 的 new 關(guān)鍵字創(chuàng)建。

replServer.defineCommand(keyword, cmd)

說明:

該屬性的值為當(dāng)前系統(tǒng)的路徑分隔符。Windows下是:”;“ POSIX下是:”:“
replServer.defineCommand() 方法用于添加新的前綴為 . 的命令到 REPL 實(shí)例。
這些命令通過輸入一個(gè) . 加 keyword 來調(diào)用。 cmd 可以是一個(gè)函數(shù)或一個(gè)具有以下屬性的對(duì)象:
help:當(dāng)鍵入 .help 時(shí)顯示的幫助說明(可選)。
action:要執(zhí)行的函數(shù),可接受一個(gè)字符串參數(shù)。

demo:

const repl = require('repl');
const replServer = repl.start({ prompt: '> ' });
replServer.defineCommand('sayhello', {
 help: '打招呼',
 action(name) {
  this.lineParser.reset();
  this.bufferedCommand = '';
  console.log(`你好,${name}!`);
  this.displayPrompt();
 }
});
replServer.defineCommand('saybye', function saybye() {
 console.log('再見!');
 this.close();
});

replServer.displayPrompt([preserveCursor])

說明:

該屬性的值為當(dāng)前系統(tǒng)的路徑分隔符。Windows下是:”;“ POSIX下是:”:“
replServer.displayPrompt() 方法會(huì)讓 REPL 實(shí)例做好用戶輸入的準(zhǔn)備,打印配置的 prompt 到 output 中新的一行,然后返回 input 等待新的輸入。
當(dāng)正在鍵入多行輸入時(shí),會(huì)打印省略號(hào)而不是提示符。
當(dāng) preserveCursor 為 true 時(shí),游標(biāo)位置不會(huì)被復(fù)位到 0。
replServer.displayPrompt 方法主要被使用 replServer.defineCommand() 方法注冊(cè)的命令的 action 函數(shù)調(diào)用。

reset 事件

說明:

該屬性的值為當(dāng)前系統(tǒng)的路徑分隔符。Windows下是:”;“ POSIX下是:”:“
當(dāng) REPL 的上下文被重置時(shí),觸發(fā) ‘reset' 事件。
每當(dāng)接收到 .clear 命令時(shí)會(huì)觸發(fā)該事件,除非 REPL 正在使用默認(rèn)的解釋器并且 repl.REPLServer 實(shí)例被創(chuàng)建時(shí) useGlobal 選項(xiàng)被設(shè)為 true。
監(jiān)聽器的回調(diào)函數(shù)被調(diào)用時(shí)會(huì)帶上 context 對(duì)象作為惟一的參數(shù)。
這主要被用于重新初始化 REPL 上下文,使之達(dá)到某些預(yù)定義的狀態(tài),如下面的例子:

demo:

const repl = require('repl');
function initializeContext(context) {
 context.m = 'test';
}
const r = repl.start({ prompt: '> ' });
initializeContext(r.context);
r.on('reset', initializeContext);
// $ ./node example.js
// > m
// 'test'
// > m = 1
// 1
// > m
// 1
// > .clear
// Clearing context...
// > m
// 'test'
// >

exit 事件

說明:

該屬性的值為當(dāng)前系統(tǒng)的路徑分隔符。Windows下是:”;“ POSIX下是:”:“
當(dāng)接收到 .exit 命令、或按下兩次 ctrl + C 發(fā)出 SIGINT 信號(hào)、或按下 ctrl+D 發(fā)出 ‘end' 信號(hào)而使 REPL 被退出時(shí),
觸發(fā) ‘exit' 事件。 監(jiān)聽器的回調(diào)函數(shù)被調(diào)用時(shí)不帶任何參數(shù)。

demo:

replServer.on('exit', () => {
 console.log('從 REPL 接收到 "exit" 事件!');
 process.exit();
});

命令與特殊鍵

說明:

該屬性的值為當(dāng)前系統(tǒng)的路徑分隔符。Windows下是:”;“ POSIX下是:”:“
所有 REPL 的實(shí)例都支持下列特殊命令:
.break – 在輸入一個(gè)多行表達(dá)式的過程中,輸入 .break 命令(或按下 ctrl-C 組合鍵)將終止表達(dá)式的繼續(xù)輸入。
.clear – 重置 REPL 的 context 為一個(gè)空對(duì)象,并清除當(dāng)前正輸入的所有多行表達(dá)式。
.exit – 關(guān)閉輸入輸出流,退出 REPL。
.help – 顯示特定命令的幫助列表。
.save – 保存當(dāng)前 REPL 會(huì)話到一個(gè)文件: > .save ./file/to/save.js
.load – 讀取一個(gè)文件到當(dāng)前 REPL 會(huì)話。 > .load ./file/to/load.js
.editor 進(jìn)入編輯模式(ctrl-D 完成,ctrl-C 取消)
REPL 中下列按鍵組合有特殊作用:
ctrl + C – 當(dāng)按下一次時(shí),與 .break 命令的效果一樣。當(dāng)在空白行按下兩次時(shí),與 .exit 命令的效果一樣。
ctrl + D – 與 .exit 命令的效果一樣。
tab – 當(dāng)在空白行按下時(shí),顯示全局和本地作用域內(nèi)的變量。當(dāng)在輸入時(shí)按下,顯示相關(guān)的自動(dòng)補(bǔ)全選項(xiàng)。

demo:

> .editor
// 進(jìn)入編輯模式(^D 完成,^C 取消)
function welcome(name) {
 return `你好 ${name}!`;
}
welcome('Node.js 用戶');
// ^D
'你好 Node.js 用戶!'
>

自定義的解釋函數(shù)

說明:

該屬性的值為當(dāng)前系統(tǒng)的路徑分隔符。Windows下是:”;“ POSIX下是:”:“
當(dāng)創(chuàng)建一個(gè)新的 repl.REPLServer 時(shí),可以提供一個(gè)自定義的解釋函數(shù)。 這可以用于實(shí)現(xiàn)完全定制化的 REPL 應(yīng)用。
例子,一個(gè)執(zhí)行文本翻譯的 REPL:

demo:

const repl = require('repl');
const { Translator } = require('translator');
const myTranslator = new Translator('en', 'fr');
function myEval(cmd, context, filename, callback) {
 callback(null, myTranslator.translate(cmd));
}
repl.start({ prompt: '> ', eval: myEval });

自定義 REPL 輸出

說明:

該屬性的值為當(dāng)前系統(tǒng)的路徑分隔符。Windows下是:”;“ POSIX下是:”:“
默認(rèn)情況下,在把輸出寫入到提供的可寫流(默認(rèn)為 process.stdout)之前,
repl.REPLServer 實(shí)例會(huì)使用 util.inspect() 方法對(duì)輸出進(jìn)行格式化。
使用 util.inspect() 方法時(shí),useColors 選項(xiàng)可被指定是否在建立默認(rèn)輸出器時(shí)使用 ANSI 風(fēng)格的代碼給輸出上色。
在構(gòu)造時(shí),通過在 writer 選項(xiàng)傳入一個(gè)新的函數(shù),可以完全地自定義一個(gè) repl.REPLServer 實(shí)例的輸出。
例子,把輸入的任何文本轉(zhuǎn)換為大寫:

demo:

const repl = require('repl');
const r = repl.start({ prompt: '> ', eval: myEval, writer: myWriter });
function myEval(cmd, context, filename, callback) {
 callback(null, cmd);
}
function myWriter(output) {
 return output.toUpperCase();
}

希望本文所述對(duì)大家node.js程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 詳解nodejs通過代理(proxy)發(fā)送http請(qǐng)求(request)

    詳解nodejs通過代理(proxy)發(fā)送http請(qǐng)求(request)

    本篇文章主要介紹了nodejs通過代理(proxy)發(fā)送http請(qǐng)求(request),具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-09-09
  • node.js中的http.request方法使用說明

    node.js中的http.request方法使用說明

    這篇文章主要介紹了node.js中的http.request方法使用說明,本文介紹了http.request的方法說明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼需要的朋友可以參考下
    2014-12-12
  • node命令行工具之實(shí)現(xiàn)項(xiàng)目工程自動(dòng)初始化的標(biāo)準(zhǔn)流程

    node命令行工具之實(shí)現(xiàn)項(xiàng)目工程自動(dòng)初始化的標(biāo)準(zhǔn)流程

    這篇文章主要介紹了node命令行工具之實(shí)現(xiàn)項(xiàng)目工程自動(dòng)初始化的標(biāo)準(zhǔn)流程 ,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Node.js API詳解之 timer模塊用法實(shí)例分析

    Node.js API詳解之 timer模塊用法實(shí)例分析

    這篇文章主要介紹了Node.js API詳解之 timer模塊用法,結(jié)合實(shí)例形式分析了Node.js API中timer模塊基本功能、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • Node中的streams流的具體使用

    Node中的streams流的具體使用

    本文主要介紹了Node中的streams流的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Node.js使用officecrypto-tool實(shí)現(xiàn)讀取加密的Excel和Word文檔

    Node.js使用officecrypto-tool實(shí)現(xiàn)讀取加密的Excel和Word文檔

    這篇文章主要為大家詳細(xì)介紹了Node.js如何使用officecrypto-tool實(shí)現(xiàn)讀取加密的Excel和Word文檔的功能,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-09-09
  • nvm mac 環(huán)境搭建過程

    nvm mac 環(huán)境搭建過程

    這篇文章主要為大家介紹了nvm mac 環(huán)境搭建過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Node.js異步I/O學(xué)習(xí)筆記

    Node.js異步I/O學(xué)習(xí)筆記

    這篇文章主要介紹了Node.js異步I/O學(xué)習(xí)筆記,本文詳細(xì)講解了異步I/O的基本概念、Node的異步I/O、非I/O的異步API、事件驅(qū)動(dòng)與高性能服務(wù)器等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • 利用python分析access日志的方法

    利用python分析access日志的方法

    最近在自學(xué)python,光看是不行的,還是要多實(shí)操的。這就是一個(gè)寫給自己的小小工具。主要功能是,便利日志文件夾下的文件,根據(jù)設(shè)定的關(guān)鍵字查找是否有web攻擊行為。有需要的朋友們下面來一起看看吧。
    2016-10-10
  • 關(guān)于Node.js的events.EventEmitter用法介紹

    關(guān)于Node.js的events.EventEmitter用法介紹

    本篇文章主要介紹了關(guān)于Node.js的events.EventEmitter用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04

最新評(píng)論