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. Що таке npm.
- Nodejs. Що таке query strings.
- Nodejs. Як відправити дані в форматі json.
- Nodejs. Як зчитувати дані з потоку.
- Nodejs. Як записувати дані в потік.
- Nodejs. Що таке middleware і статичні файли.
- Nodejs. Що таке потоки і буфери.
- Nodejs. Як обробляти post запити.
- Команда clip
- Динамічний висновок в php-скрипті
- Nodejs. Починаємо роботу з express.
- Nodejs. Оброблювач подій.
- Nodejs. Движок v8.
- Nodejs. Навігація по сторінках.
- Nodejs. Template engine. Частина 2.
- Nodejs. Пакет nodemon.
- Nodejs. Створення та видалення директорій.
- Nodejs. Глобальний об`єкт.
- Nodejs. Template engine. Частина 1.
- Nodejs. Запис і читання файлів.