Node.js REPL (интерактивный интерпретатор)

Node.js предоставляет встроенный REPL (Read-Eval-Print Loop) — интерактивную среду программирования, которая может выполнять код JavaScript в терминале.

Название REPL происходит от его основных операций: Read, Eval, Print и Loop.

Node поставляется с интерактивным интерпретатором, который может выполнять следующие задачи:

  • Чтение— чтение пользовательского ввода, разбор входной структуры данных JavaScript и сохранение её в памяти.

  • Eval— выполнение входной структуры данных

  • Print— вывод результата

  • Loop— повторение вышеуказанных шагов, пока пользователь дважды не нажмётctrl-cдля выхода.

REPL позволяет напрямую вводить и немедленно выполнять код JavaScript, быстро проверяя фрагменты кода.

REPL подходит для тестирования простой логики, отладки и проверки нового синтаксиса или API Node.js.

Начните изучать REPL

Мы можем ввести следующую команду, чтобы запустить терминал Node:

node

После выполнения появляется следующее содержимое:

# node
Welcome to Node.js v20.1.0.
Type ".help" for more information.
> 

На этом этапе мы можем>ввести простые выражения после приглашения и нажать клавишу Enter, чтобы вычислить результат.

Вычисление простых выражений

Далее давайте выполним несколько простых математических операций в окне командной строки REPL Node.js:

$ node
> 1 +4
5
> 5 / 2
2.5
> 3 * 6
18
> 4 - 1
3
> 1 + ( 2 * 3 ) - 4
3
>

Использование переменных

Вы можете хранить данные в переменных и использовать их, когда это необходимо.

Объявление переменной требует ключевого словаvar. Если ключевое слово var не используется, переменная будет выведена напрямую.

Используя ключевое словоvar, вы можете использовать console.log() для вывода переменной.

$ node
> x = 10
10
> var y = 10
undefined
> x + y
20
> console.log("Hello World")
Hello World
undefined
> console.log("www.example.com")
www.example.com
undefined

Многострочные выражения

Node REPL поддерживает ввод многострочных выражений, что несколько похоже на JavaScript. Далее давайте выполним цикл do-while:

$ node
> var x = 0
undefined
> do {
... x++;
... console.log("x: " + x);
... } while ( x < 5 );
x: 1
x: 2
x: 3
x: 4
x: 5
undefined
>

...Символ из трёх точек автоматически генерируется системой; вы просто нажимаете Enter, чтобы начать новую строку. Node автоматически определит, является ли это продолжающимся выражением.

Переменная подчёркивания (_)

Вы можете использовать символ подчёркивания (_), чтобы получить результат предыдущего выражения:

$ node
> var x = 10
undefined
> var y = 20
undefined
> x + y
30
> var sum = _
undefined
> console.log(sum)
30
undefined
>

Команды REPL

Сводная таблица распространённых команд и сочетаний клавиш в Node.js REPL:

Команда/Сочетание клавишОписание
.helpОтображает все доступные команды в REPL и их описания.
.exitВыходит из сеанса REPL, эквивалентно нажатиюCtrl + D。
.save <filename>Сохраняет текущий сеанс REPL в указанный файл.
.load <filename>Загружает и выполняет код из указанного файла в REPL.
.breakВыходит из режима ввода многострочных выражений и возвращается в режим однострочного ввода.
.clearСбрасывает контекст REPL, что эквивалентно очистке всех переменных и состояния.
Ctrl + CПринудительно завершает текущий ввод или прерывает команду. При двойном нажатии выходит из сеанса REPL.
Ctrl + DЗавершает сеанс REPL, эквивалентно.exit。
Ctrl + LОчищает экран, аналогично вводуclear。
Arrow keys (↑/↓)Просмотр истории ввода, просмотр и повторное выполнение ранее введённых команд.
TabАвтодополнение ввода, отображение возможных вариантов или завершение команд.
_Используется для доступа к результату предыдущего выражения.
Ctrl + RВход в обратный поиск по истории для поиска ранее введённых команд.
Ctrl + UУдалить всё содержимое от курсора до начала текущей строки.
Ctrl + KУдалить всё содержимое от курсора до конца текущей строки.
Ctrl + AПереместить курсор в начало строки.
Ctrl + EПереместить курсор в конец строки.
Ctrl + BПереместить курсор на один символ назад.
Ctrl + FПереместить курсор на один символ вперёд.
Ctrl + NПоказать следующую запись истории (то же, что и клавиша «Стрелка вниз»).
Ctrl + PПоказать предыдущую запись истории (то же, что и клавиша «Стрелка вверх»).
Ctrl + ZПриостановить сеанс REPL и перевести его в фоновый режим (доступно в некоторых системах).

Остановить REPL

Ранее мы упоминали, что двукратное нажатие сочетания клавишctrl + cзавершит работу REPL:

$ node
>
(^C again to quit)
>

Расширенные возможности REPL

  • Автодополнение: Введите часть кода и нажмитеTab, и REPL попытается завершить его или показать возможные варианты.
  • Кэширование результатов: REPL автоматически сохраняет результат последнего выполнения в специальную переменную_. Например:
    > 5 + 5
    10
    > _ * 2
    20
    

Демонстрация примера GIF

Далее мы продемонстрируем примеры операций с помощью GIF-изображения:

Другие расширения