如何使用 Node.js REPL
node
命令是我們用來執行 Node.js 腳本的命令
node script.js
如果我們執行node
指令,而不帶任何要執行的腳本或任何參數,我們將開始一個REPL會話
node
注意:
REPL
代表Read Evaluate Print Loop,它是一個編程語言環境(基本上是一個控制台窗口),它將單個表達式作為用戶輸入並在執行後將結果返回到控制台。REPL會話提供了一種方便的方式來快速測試簡單的JavaScript代碼。
如果您現在在終端中嘗試,會發生以下情況
❯ node
>
該命令處於空閒模式並等待我們輸入內容。
提示:如果您不確定如何打開終端,請搜索“如何在您的操作系統中打開終端”。
REPL正在等待我們輸入一些JavaScript代碼,更準確地說。
開始簡單地輸入
> console.log('test')
test
undefined
>
第一個值test
是我們告訴控制台打印的輸出,然後我們得到undefined
,這是運行console.log()
的返回值。Node讀取此行代碼,評估它,打印結果,然後返回等待更多代碼行。對於我們在REPL中執行的每一段代碼,Node都會循環進行這三個步驟,直到我們退出會話。這就是REPL得名的原因。
Node自動打印任何JavaScript代碼行的結果,無需指示即可進行。例如,輸入以下行並按Enter
> 5 === '5'
false
>
請注意上述兩行輸出的差異。Node REPL在執行console.log()
後打印了undefined
,而另一方面,它只打印了5 === '5'
的結果。您需要記住,前者只是JavaScript中的一個語句,而後者是一個表達式。
在某些情況下,您想要測試的代碼可能需要多行。例如,假設您想要定義一個生成隨機數的函數,在REPL會話中輸入以下行,然後按Enter鍵
function generateRandom() {
...
Node REPL足夠智能,可以確定您尚未完成編寫代碼,並且它將進入多行模式,讓您輸入更多代碼。現在完成函數定義並按Enter鍵
function generateRandom() {
...return Math.random()
}
undefined
_
特殊變量
如果在一些代碼之後您輸入_
,那將打印出上一個操作的結果。
上箭頭鍵
如果按下上箭頭
鍵,您將獲得對當前及甚至先前REPL會話中執行的前幾行代碼的歷史記錄訪問權限。
點命令
REPL有一些特殊命令,全部以點.
開頭。它們是
.help
:顯示點命令幫助.editor
:啟用編輯器模式,輕鬆編寫多行JavaScript代碼。一旦進入此模式,輸入ctrl-D運行您編寫的代碼。.break
:輸入多行表達式時,輸入.break命令將中止進一步的輸入。與按下ctrl-C相同。.clear
:將REPL上下文重置為空對象並清除當前正在輸入的任何多行表達式。.load
:加載JavaScript文件,相對於當前工作目錄.save
:將REPL會話中輸入的所有內容保存到文件中(指定文件名).exit
:退出 REPL(相當於按兩次 ctrl-C)
REPL 在您輸入多行語句時,無需調用 .editor
即可識別。
例如,如果您開始輸入類似以下的迴圈:
[1, 2, 3].forEach(num => {
並按下 enter
鍵,REPL 將換行,並以三個點開始的新行指示您可以繼續編輯該區塊。
... console.log(num)
... })
如果您在一行的末尾輸入 .break
,多行模式將停止,並且該語句將不被執行。
從 JavaScript 檔案運行 REPL
我們可以使用 repl
將 REPL 導入 JavaScript 檔案中。
const repl = require('node:repl');
使用 repl 變數,我們可以執行各種操作。要啟動 REPL 命令提示,請輸入以下行:
repl.start();
在命令行中執行該檔案。
node repl.js
您可以傳遞一個字符串,以在 REPL 開始時顯示。默認為 '> '(帶有尾隨空格),但我們可以定義自定義提示。
// a Unix style prompt
const local = repl.start('$ ');
您可以在退出 REPL 時顯示一條消息
local.on('exit', () => {
console.log('exiting repl');
process.exit();
});
您可以在repl 文檔中了解更多關於 REPL 模塊的信息。