В этой части учебника мы рассмотрим как происходит работа с потоками Node.js, на мой взгляд это одна из самых важных тем, поэтому обязательна к прочтению.
Что такое потоки в Node.js:
Для начала разберём что это вообще такое и для чего нужно. Если кратко говоря, то потоки нужны для ввода/вывода данных, но они записывают их не большими кусками, что способствует к использованию меньшего количество оперативной памяти, хотя это всё зависит от разработчика.
Работа Stream в Node.js:
Как вы уже скорее всего поняли, потоки ещё называют Stream, и для работы с ними вам не надо не чего подключать.
Ещё стоит сказать, что если вы уже читали нашу статью «Основы node.js», то вы уже сталкивались с таким понятием как поток данных, для напоминания, вот вам ещё пример из это статьи:
1 2 3 4 5 | // Создаём сервер let server = http.createServer(function (req, res) { // Выводим на странице "Hello world!" res.end("Hello world!"); }) |
Здесь мы при создание сервера используем функцию которая применяет в себя два параметра, они то и есть потоки, первый req — поток для чтений и res — поток для записи.
Но для наглядности, я вам покажу пример, для этого буду использовать библиотеку fs:
1 2 3 4 5 6 7 8 9 10 11 12 | const fs = require("fs"); let writeStream = fs.createWriteStream("text.txt"); writeStream.write("Какой то текст \n"); writeStream.write("Ещё не большой текст \n"); writeStream.end("Завершение записи"); let readStream = fs.createReadStream("text.txt", "utf8"); readStream.on("data", function(chunk){ console.log(chunk); }); |
В начале как обычно мы подключаем библиотеку fs, дальше создаём поток для записи файла с помощью метода createWriteStream(), куда передаём в качестве параметра путь до файла в который будем вписывать строки, мы создаём поток и передаём его в переменную.
После с пошью объекта который передали в переменную writeStream, мы записываем данные с использованием метода write(), и зарываем поток методом end() и делаем последнею запись.
Последние создаём поток для чтения с помощью createReadStream(), и в него передаём путь до файла и кодировку, но последние не обязательно.
Теперь с помощью метода on(), отслеживаем событие data, оно появляется когда считывается каждый кусок потока, а chunk это сам кусок потока, выводим их в консоль:

Как видите всё работает так как надо, и хоть мы и рассмотрели их только для работы с файлами, но также они работают и для других компонентов, суть будет такая же.
Вывод:
В этой части учебника мы рассмотрели как происходит работа с потоками Node.js, или Stream, и как видите всё очень просто, думаю вам было интересно и полезно.
