В файле index.js директории 02-write-file напишите скрипт выводящий в консоль приветствие, ожидающий ввод текста, и записывающий введённый текст в файл.
- Запрещается использование любых сторонних модулей
- Каждое из заданий должно запускаться командой node <имя папки задания> выполненной в корневой директории
- Запрещается использование синхронных функций модуля fs такие как
fs.statSync(path[, options])
,fs.readFileSync(path[, options])
и другие находящиеся в разделе synchronous API
- Внутри папки 02-write-file находится 1 файл index.js
- При выполнении команды
node 02-write-file
в папке02-write-file
создаётся текстовый файл, а в консоль выводится приглашение на ввод текста(На ваш выбор) - После ввода текста в каталоге
02-write-file
введённый текст должен быть записан в созданный ранее файл. Процесс не завершается и ждёт нового ввода. - После следующего ввода созданный изначально текстовый файл дополняется новым текстом, процесс продолжает ждать ввод.
- При нажатии сочетания клавиш
ctrl + c
или вводеexit
в консоль выводится прощальная фраза и процесс завершается.
- Укрепить понимание основ работы событий и потоков в Node.js
- Работа с глобальным объектом process
В данном задании вам предстоит написать программу считывающую ваш консольный ввод до момента принудительного завершения процесса ctrl + c
или ввода ключевого слова exit. Порядок действий для выполнения задачи:
- Импорт всех требуемых модулей.
- Создание потока записи в текстовый файл
- Вывод в консоль приветственного сообщения
- Ожидание ввода текста пользователем, с дальнейшей проверкой ввода на наличие ключевого слова exit
- Запись текста в файл
- Ожидание дальнейшего ввода
- Реализация прощального сообщения при остановке процесса
Для успешного выполнения данного таска вам понадобятся знания о событиях и потоках приобретённые ранее, а так же следует изучить возможности глобального объекта process. Используя его события вы сможете, в том числе и перехватывать сигналы посылаемые процессу, например при нажатии ctrl + c
.
Читать что-либо из потока(stream) по строке за раз вам может помочь модуль Readline. Стандартный поток ввода stdin являясь ReadbleStream отлично подходит для этого.
Обратите внимание, что переводы документации на русский язык могут быть устаревшими и не содержать всех современных возможностей модулей. Однако, основные концепции описанные там работают и по сей день. Для получения актуальной информации всегда используйте официальную документацию!
- Process:
- Readline:
- События:
- Потоки:
- Модуль Path: