Как использовать REPL в Node.js
Команда node
используется для запуска скриптов Node.js:
node script.js
Если запустить команду node
без скрипта для выполнения или без аргументов, запустится сессия REPL:
node
ПРИМЕЧАНИЕ
REPL расшифровывается как Read Evaluate Print Loop (читать, вычислять, выводить, повторять) и представляет собой среду программирования (по сути, окно консоли), которая принимает одиночное выражение в качестве пользовательского ввода и возвращает результат обратно в консоль после выполнения. Сессия REPL предоставляет удобный способ быстрого тестирования простого кода JavaScript.
Если вы попробуете это сейчас в вашем терминале, произойдет следующее:
> node
>
Команда находится в режиме ожидания и ждет, пока мы что-нибудь введем.
TIP
Если вы не знаете, как открыть терминал, поищите в Google "Как открыть терминал в вашей операционной системе".
REPL ожидает, что мы введем код JavaScript, если быть точнее.
Начнем с простого и введем:
> console.log('test')
test
undefined
>
Первое значение, test
, — это вывод, который мы велели консоли напечатать, затем мы получаем undefined
, что является возвращаемым значением выполнения console.log()
. Node прочитал эту строку кода, вычислил ее, напечатал результат и затем вернулся к ожиданию новых строк кода. Node будет проходить через эти три шага для каждого фрагмента кода, который мы выполняем в REPL, пока мы не выйдем из сессии. Именно отсюда REPL получил свое название.
Node автоматически печатает результат любой строки кода JavaScript без необходимости указывать ему это делать. Например, введите следующую строку и нажмите Enter:
> 5==5
true
>
Обратите внимание на разницу в выводах двух приведенных выше строк. Node REPL напечатал undefined
после выполнения console.log()
, тогда как, с другой стороны, он просто напечатал результат 5== '5'
. Необходимо помнить, что первое — это просто оператор в JavaScript, а второе — выражение.
В некоторых случаях код, который вы хотите протестировать, может потребовать нескольких строк. Например, допустим, вы хотите определить функцию, которая генерирует случайное число, в сессии REPL введите следующую строку и нажмите Enter:
function generateRandom()
...
REPL Node достаточно умен, чтобы определить, что вы еще не закончили писать свой код, и он перейдет в многострочный режим, чтобы вы могли ввести больше кода. Теперь завершите определение вашей функции и нажмите Enter:
function generateRandom()
...return Math.random()
Специальная переменная:
Если после некоторого кода вы введете _
, это выведет результат последней операции.
Клавиша со стрелкой вверх:
Если вы нажмете клавишу со стрелкой вверх, вы получите доступ к истории предыдущих строк кода, выполненных в текущем и даже предыдущих сессиях 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].foxEach(num=>{
и нажмете Enter, REPL перейдет на новую строку, начинающуюся с трех точек, указывая, что вы можете продолжить работу над этим блоком.
1... console.log (num)
2...}
Если вы введете .break
в конце строки, многострочный режим остановится, и выражение не будет выполнено.
Запуск REPL из файла JavaScript
Мы можем импортировать REPL в файл JavaScript с помощью repl
.
const repl = require('node:repl')
Используя переменную repl
, мы можем выполнять различные операции. Чтобы запустить командную строку REPL, введите следующую строку:
repl.start()
Запустите файл в командной строке.
node repl.js
Вы можете передать строку, которая отображается при запуске REPL. По умолчанию это '>' (с завершающим пробелом), но мы можем определить пользовательскую подсказку.
// Подсказка в стиле Unix
const local = repl.start('$ ')
Вы можете отобразить сообщение при выходе из REPL
local.on('exit', () => {
console.log('exiting repl')
process.exit()
})
Вы можете узнать больше о модуле REPL в документации по REPL.