В этой части учебника мы рассмотрим как происходит работа с потоками 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, и как видите всё очень просто, думаю вам было интересно и полезно.