Page 333 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 333
В этом примере мы просто выводим содержимое файла на консоль (заменяя сим
волы перехода на новую строку для наглядности). Вы можете поместить оба эти при
мера в один и тот же файл: у вас может быть поток записи, пишущий в файл, и по
ток чтения, читающий из него.
Дуплексные потоки не столь распространены и не рассматриваются в этой кни
ге. Как и следовало ожидать, вы можете вызвать метод wri te, чтобы писать данные
в дуплексный поток, а также прослушивать события data и end.
Поскольку данные в потоках "текут': вполне резонно взять данные, выходящие из
потока чтения, и перенаправить их в поток записи. Этот процесс называется конвей
ером (piping). Например, мы могли бы перенаправить поток чтения в поток записи,
чтобы скопировать содержимое одного файла в другой.
const rs = fs . createReadStrea ( ' strea . txt ' ) ;
rn
rn
const ws = fs . createWriteStrearn ( ' strearn_copy . t xt ' ) ;
rs . p ipe (w ) ;
s
Обратите внимание, что в этом примере мы не должны определять кодировку
символов: rs просто пересылает байты из файла t r ea . txt в поток ws (что при
m
s
водит к их записи в файл t ream _со у . txt); кодировка символов имеет значение,
s
р
только если мы пытаемся интерпретировать данные.
Конвейерная обработка - это общая методика для перемещения данных. Напри
мер, можно переслать содержимое файла в виде ответа веб-сервера. Либо вы могли
бы переслать сжатые данные процессору распаковки, который, в свою очередь, пере
шлет данные программе записи в файл.
Веб-се р в е р ы
Хотя Node теперь используется во многих приложениях, его первоначальная цель
состояла в предоставлении услуг веб-сервера. Таким образом, нельзя не рассмотреть
и этот способ его применения.
Те из вас, кто настраивал сервер Apache (или IIS, или любой другой веб-сервер ),
могут быть поражены простой создания и функционирования этого веб-сервера.
Модуль http (и его защищенный дубликат, модуль https) предоставляет метод
createServer, который создает простой веб-сервер. Все, что вы должны сделать, -
это указать функцию обратного вызова, которая будет обрабатывать входящие за
просы. Чтобы запустить сервер, нужно просто вызывать его метод i s t en и указать
l
номер прослушиваемого порта.
p
const http = require ( ' htt ' ) ;
s
const server = http . createServer ( f unction ( r eq, re ) {
l
g
e
console . l o ( ' $ { r q . rn ethod } $ { r eq . u r } ' ) ;
rеs . е n ( ' Привет, ми ! ' ) ;
р
d
336 Глава 20. Платформа Node

