tgoop.com/startpoint_dev/155
Last Update:
Недавно увидела в одной статье аббревиатуру REPL, которая оказалась для меня на первый взгляд незнакомой. Но на самом деле, я знаю, что это такое, и хочу, чтобы теперь знали и вы)
REPL — это Read–Eval–Print–Loop: интерактивная оболочка, в которой можно писать JavaScript-код построчно, и он сразу выполняется. Похоже на консоль в инструментах разработчика в браузере.
Когда мы просто запускаем node
в терминале и дальше можем писать разные команды вида 2 + 2
— вот это и есть REPL.
Неожиданность для меня была в другом. В Node.js есть отдельный модуль для REPL. С его помощью можно встроить собственный REPL прямо в код, например, для дебага приложения.
Такой подход используется и в NestJS. Запустить REPL там можно командой npm run start -- --entryFile repl
, если заранее настроен файл repl.ts (документация). Там можно получить доступ к инстансам сервисов и вызывать их методы руками. И для реализации такого механизма NestJS как раз использует модуль repl, исходники можно посмотреть тут.
А волшебный доступ ко всем сервисам приложения реализуется с помощью дополнения контекста repl. Вот так можно сделать свой микро-repl с доступными в контексте переменными и функциями:
import repl from 'node:repl';
const context = {
hello: 'world',
add: (a, b) => a + b,
};
const r = repl.start('> ');
Object.assign(r.context, context)
Вывод будет вот такой:
node repl-test.js
> hello
'world'
> add(2, 3)
5
>
#startpoint_dev_nodejs
BY Настя Котова // Frontend & Node.js
Share with your friend now:
tgoop.com/startpoint_dev/155