Как использовать 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()
...
Node REPL достаточно умен, чтобы определить, что вы еще не закончили писать свой код, и он перейдет в многострочный режим, чтобы вы могли ввести больше кода. Теперь завершите определение своей функции и нажмите Enter:
function generateRandom()
...return Math.random()
Специальная переменная:
Если после какого-либо кода вы введете _
, это выведет результат последней операции.
Стрелка вверх:
Если вы нажмете клавишу со стрелкой вверх, вы получите доступ к истории предыдущих строк кода, выполненных в текущем и даже предыдущих сеансах REPL.
Dot команды
REPL имеет несколько специальных команд, все они начинаются с точки .
. Они:
.help
: показывает справку по dot командам..editor
: включает режим редактора, чтобы с легкостью писать многострочный код JavaScript. Как только вы окажетесь в этом режиме, введитеctrl-D
, чтобы запустить написанный вами код..break
: при вводе многострочного выражения ввод команды.break
прервет дальнейший ввод. То же самое, что и нажатиеctrl-C
..clear
: сбрасывает контекст REPL в пустой объект и очищает любое многострочное выражение, вводимое в данный момент..1oad
: загружает файл JavaScript относительно текущего рабочего каталога..save
: сохраняет все, что вы ввели в сеансе REPL, в файл (укажите имя файла)..exit
: выходит из REPL (то же самое, что и двойное нажатиеctrl-C
).
REPL знает, когда вы набираете многострочное выражение без необходимости вызывать .editor
. Например, если вы начнете вводить итерацию следующим образом:
[1, 2,3].foxEach(num=>{
и вы нажмете enter, REPL перейдет на новую строку, которая начинается с 3 точек, указывая, что теперь вы можете продолжить работу над этим блоком.
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('выход из repl');
process.exit();
});
Вы можете узнать больше о модуле REPL в документации REPL.