Nodejs. Що таке pipe ().

NodeJS. Що таке pipe ().

Всім привіт! У цій статті ми розглянемо, що таке pipes в NodeJS, в чому переваги і як це використовувати.

опис

Для початку давайте згадаємо, що ми робили в минулій статті. Ми створили потік для читання і потік для запису, зчитували дані в потоці для читання з файлу readMe.txt, слухали подія на отримання даних і, як тільки воно спрацьовувало, ми використовували потік для запису, щоб завантажити інформацію, отриману з файлу readMe.txt в файл writeMe.txt.

Цей процес, де ми зчитуємо дані з одного потоку і записуємо їх в інший, в NodeJS зустрічається досить часто, і тому була придумана така штука як pipes.

Що таке pipes

Це елегантне рішення, яке дозволяє збирати шматочки інформації в буфер і, коли він заповнений, відразу відправляти їх в потік для читання, минаючи подія отримання даних, яке ми писали минулого разу.




Давайте тепер перепишемо наш попередній код з використанням pipe:

var myReadStream = fs.createReadStream(__dirname +`/readMe.txt`,`Utf8`) -
var myWriteStream = fs.createWriteStream(__dirname +`/writeMe.txt`) -
myReadStream
.pipe(myWriteStream) -

Якщо ви запустите цей код, то побачите, що він працює так само, як і раніше.

Відео: Node.js - pipe event on writable stream

Відправка даних клієнта

Тепер згадаємо наш сервер, який ми теж вже писали в одній зі статей. Зараз він нам стане в нагоді, щоб таким же чином, як ми робили це з файлами, відправляти дані безпосередньо користувачеві. Давайте відразу перейдемо до коду:

Відео: Що таке Node.JS? Чому Node.JS?

var server = http.createServer(function(request, response){
response
.writeHead(200,{`Content-Type`:`Text / plain`}) -
var myReadStream = fs.createReadStream(__dirname +`/readMe.txt`,`Utf8`) -
myReadStream
.pipe(response) -
}) -

server
.listen(3000,`127.0.0.1`) -
console
.log(`Прослуховування порту 3000`) -



Тут ми створюємо сервер, відправляємо заголовки, а також дані за допомогою методу pipe () клієнту за адресою 127.0.0.1:3000.

Відео: Node.js Process & Child Process

Якщо ви тепер запустіть код і перейдете за адресою вище, то побачите ті дані, що були в файлі readMe.txt.

У чому переваги даного підходу

Як ви вже, напевно, помітили, перша перевага - це лаконічність коду. Нам тепер не потрібно писати кілька потоків, писати для них події і відстежувати дані. Написали лише один метод, і все працює.

Відео: CodeDojo Live # 1: Знайомство з Node.js

Друга перевага - це продуктивність. Оскільки даний метод вже вбудований в платформу NodeJS, то він досить добре оптимізований і, отже, використовуючи його, ви підвищуєте продуктивність свого застосування.

висновок

Отже, сьогодні ми розглянули, що таке pipe в NodeJS, в чому його переваги і як використовувати даний метод.

Дякую за увагу!

Поділися в соціальних мережах:

Схожі
Nodejs. Як записувати дані в потік.Nodejs. Як записувати дані в потік.
Nodejs. Що таке middleware і статичні файли.Nodejs. Що таке middleware і статичні файли.
Nodejs. Оброблювач подій.Nodejs. Оброблювач подій.
Nodejs. Що таке потоки і буфери.Nodejs. Що таке потоки і буфери.
Nodejs. Що таке query strings.Nodejs. Що таке query strings.
Динамічний висновок в php-скриптіДинамічний висновок в php-скрипті
Nodejs. Template engine. Частина 1.Nodejs. Template engine. Частина 1.
Nodejs. Template engine. Частина 2.Nodejs. Template engine. Частина 2.
Nodejs. Як обробляти post запити.Nodejs. Як обробляти post запити.
Nodejs. Починаємо роботу з express.Nodejs. Починаємо роботу з express.
» » Nodejs. Що таке pipe ().