Node.js. Самое полное руководство для веб-разработчиков в примерах от сообщества Stack Overflow
Год издания: 2026
Автор: Stack Overflow
Издательство: АСТ
ISBN: 978-5-1 7-162197-1
Серия: Быстрый старт в программирование
Язык: Русский
Формат: PDF
Качество: Отсканированные страницы + слой распознанного текста
Количество страниц: 482
Описание: Книга «Node.js. Самое полное руководство для веб-разработчиков в примерах от сообщества Stack Overflow» представляет собой продвинутое учебное пособие по работе на языке JavaScript в кроссплатформенной среде выполнения Node.js - чрезвычайно популяр н ой и важнейшей в области веб-разработки. Вспомогательный контент для программистов с любым опытом и уровнем знаний основан на практических примерах кодов, написанных экспертами широко известного в профессиональных кругах сообщества Stack Overflow, где лучшие ИТ-специалисты со всего мира делятся своими наработками, отвечая на многие технические вопросы.
Издание содержит подробное объяснение важнейших концепций и приемов работы с Node.js, дополненное примерами их практического применения, что даст возможность молодым разработчикам программного обеспечения быстро повысить уровень своих компетенций, а опытным - найти актуальные решения для сложных задач. В книге приведен мощный и современный инструментарий для создания серверов, API, разработки веб-приложений, работы с базами данных, использования WebSocket. Отдельные главы посвящены работе с менеджерами пакетов NPM и Yarn эффективной обработке событий и повышению производительности.
Примеры страниц (скриншоты)
Оглавление
Глав а 1. Начало ра боты с Node.js ............................................................................... 25
Примечания ................................................................................................................ 25
Версии ....................................................................................................................... 25
Примеры .................................................................................................................... 29
НТТР-сервер «Hello World» ........................................................................................... 29
Пример «Hello World» в командной строке ..................................................................... 30
Установка и запуск Node.js ........................................................................................... 31
Запуск программы Node.js ........................................................................................... 33
Развертывание вашего приложения в онлайн-среде ....................................................... 33
Отладка вашего Nоdе.js-приложения ............................................................................. 34
Отладка нативно .......................................................................................................... 34
«Hello World» с использованием Express ................................................................ 34
«Hello World» с базовой маршрутизацией ............................................................. 36
TLS Socket: сервер и клиент ......................................................................................... 37
Как создать ключ и сертификат ........................................................................ 37
Важно! ......................................................................................................................... 38
TLS Socket Server ...................................................................................................... 38
Hello World в REPL ......................................................................................................... 40
Соrе-модули ................................................................................................................. 40
Все соrе-модули: краткий обзор ........................................................................ 41
Как запустить базовый НТТРS ве6-сервер? ............................................................ 46
Шаг 1: создание центра сертификации .......................................................... 46
Шаг 2: установка вашего сертификата в качестве корневого ........................................... 47
Шаг 3: запуск вашего Node-cepвepa ................................................................. 47
Глава 2. Взаимодействие Arduino с Node.js ........................................................ 49
Введение ..................................................................................................................... 49
Примеры ...................................................................................................................... 49
Связь Node.js с Arduino через serialport ................................................................... 49
Код Node.js .................................................................................................................. 49
Код Arduino ................................................................................................................ 50
Запуск ......................................................................................................................... 51
Глава 3. async.js ........................................................................................................ 52
Синтаксис .................................................................................................................... 52
Примеры ...................................................................................................................... 52
Параллельное выполнение: многозадачность .................................................... 52
Вызов async.parallel() с объектом ...................................................................... 53
Обработка нескольких значений ..................................................................... 54
Последовательное выполнение: независимый монотаскинг ....................... 55
Вызов async.series() с объектом .......................................................................... 55
Водопад (waterfall): зависимый монотаскинг ...................................................... 56
async.times (для более удобной обработки циклов) ........................................... 57
async.each (для эффективной обработки массива данных) ............................ 57
async.series (для обработки событий по одному) ................................................ 58
Вывод ..................................................................................................................... 59
Глава 4. Async/Await ................................................................................................. 60
Введение ................................................................................................................. 60
Примеры .................................................................................................................. 60
Асинхронные функции с обработкой ошибок через try-catch ....................... 60
Сравнение Promises и Async/Await ............................................................................ 61
Переход от обратных вызовов .................................................................................... 62
Остановка выполнения на await ............................................................................... 63
Глава 5. Асинхронное программирование ......................................................... 64
Введение ................................................................................................................................... 64
Синтаксис ................................................................................................................................. 64
Примеры ................................................................................................................................... 64
Функции обратного вызова в JavaScript ................................................................. 64
Синхронные функции обратного вызова ...................................................... 64
Асинхронные функции обратного вызова .................................................... 66
Функции обратного вызова (callbacks) в Node.js ................................................. 67
Пример кода .............................................................................................................. 68
Вывод ........................................................................................................................... 68
Обработка ошибок в асинхронном коде ........................................................ 69
Обработчики событий ......................................................................................................... 69
Домены ...................................................................................................................................... 69
Callback hell ........................................................................................................................ 70
Как избежать callback hell ............................................................................................ 71
Нативные Promise (Промисы) ..................................................................................... 71
Глава 6. Автоматическая перезагрузка
при изменениях ....................................................................................................... 73
Примеры ................................................................................................................................... 73
Автоперезагрузка при изменении исходного кода
с использованием nodemon ......................................................................................... 73
Установка nodemon глобально .......................................................................... 73
Установка nodemon локально ............................................................................ 73
Использование nodemon ...................................................................................... 73
Browsersync ........................................................................................................................ 74
Обзор ............................................................................................................................ 74
Установка ................................................................................................................... 74
Пользователи Windows ....................................................................................................... 75
Основное использование ..................................................................................... 75
Продвинутое использование ............................................................................. 75
Grunt.js ......................................................................................................................... 75
Gulp.js ........................................................................................................................... 75
API .......................................................................................................................................... 76
Глава 7. Избегайте ада обратных вызовов (callback hell) ................................ 77
Примеры ................................................................................................................................... 77
Модуль Async ..................................................................................................................... 77
Еще о модуле Async ........................................................................................................ 78
Пример использования Async waterfall .................................................................. 78
Глава 8. Bluebird Promises (промисы) .................................................................. 79
Примеры ................................................................................................................................... 79
Преобразование библиотеки nodeback в Promises ............................................. 79
Функциональные Promises .......................................................................................... 79
Корутины (coroutines) .................................................................................................... 80
Автоматическое освобождение ресурсов (Promise.using) ................................ 80
Последовательное выполнение ................................................................................. 80
Глава 9. Преобразование функций обратного вызова
в Promises (промисах) ............................................................................................ 81
Примеры ................................................................................................................................... 81
Промисификация функций обратного вызова .................................................... 81
Ручная промисификация функции обратного вызова ..................................... 82
Промисификация setTimeout ...................................................................................... 83
Глава 10. Интеграция с Cassandra ......................................................................... 84
Примеры ................................................................................................................................... 84
Hello world .......................................................................................................................... 84
Глава 11. Интерфейс командной строки (CLO .................................................... 86
Синтаксис ................................................................................................................................. 86
Примеры ................................................................................................................................... 86
Опции командной строки ............................................................................................ 86
Глава 12. Взаимодействие «клиент - сервер>> ................................................... 91
Примеры ................................................................................................................................... 91
Использование с Express, jQuery and Jade .............................................................. 91
Глава 13. МодУль Cluster ......................................................................................... 94
Синтаксис ................................................................................................................................. 94
Примечания ............................................................................................................................. 94
Примеры ................................................................................................................................... 95
Hello World ......................................................................................................................... 95
Пример кластера .............................................................................................................. 96
Глава 14. Подключение к MongoDB ...................................................................... 97
Введение ................................................................................................................................... 97
Синта ксис ................................................................................................................................. 97
Примеры ................................................................................................................................... 97
Простой пример подключения к MongoDB из Node.js ....................................... 97
Простой способ подключения к MongoDB
с использованием чистого Node.js ............................................................................ 98
Глава 15. Создание библиотеки Node.js, поддерживающей
как Promises, так и функции обратного вызова
с первым аргументом-ошибкой ........................................................................... 99
Введение ................................................................................................................................... 99
Примеры ................................................................................................................................... 99
Пример модУЛЯ и соответствующей программы
с использованием Bluebird .......................................................................................... 99
Глава 16. Создание API с помощью Node.js ........................................................ 102
Примеры ................................................................................................................................. 102
GET API с использованием Express ......................................................................... 102
POST API с использованием Express ....................................................................... 102
Глава 17. Парсер CSV в Node.js .............................................................................. 104
Введение ................................................................................................................................. 104
Примеры ................................................................................................................................. 104
Использование FS для чтения CSV .......................................................................... 104
Глава 18. Работа с базой данных (МongoDB с Mongoose) ................................. 105
Примеры ................................................................................................................................. 105
Подключение Mongoose .............................................................................................. 105
Модель ............................................................................................................................... 105
Вставка данных .............................................................................................................. 106
Чтение данных ............................................................................................................... 106
Глава 19. Отладка Nоdе.js-приложения .............................................................. 108
В строенный отладчик Node.js
и node inspector ..................................................................................................................... 108
Использование встроенного отладчика ............................................................... 108
Команды отладки .................................................................................................. 108
Использование встроенного инспектора Node ................................................. 110
Глава 20. Доставка НТМL или других типов файлов ........................................ 111
Синтаксис ............................................................................................................................... 111
Примеры ................................................................................................................................. 111
До ставка НТМL по указанному пути ...................................................................... 111
Структура папок .................................................................................................... 111
server.js ...................................................................................................................... 111
Глава 21. Внедрение зависимостей ..................................................................... 113
Почему следует использовать внедрение зависимостей .............................. 113
Глава 22. Развертывание приложения Node.js без простоя ............................ 114
Примеры ................................................................................................................................. 114
Развертывание с использованием РМ2 без простоя ........................................ 114
Глава 23. Развертывание приложений Node.js в продакшене ....................... 116
Примеры ................................................................................................................................. 116
Установка NODE_ENV="production" ......................................................................... 116
Флаги выполнения ............................................................................................... 116
Зависимости ........................................................................................................... 116
Менеджер процессов РМ2 .......................................................................................... 118
Развертывание с использованием РМ2 ................................................................ 118
Полезные команды при работе с РМ2 ........................................................... 119
Forever ................................................................................................................................ 119
Использование разных свойств/конфигураций
для разных окружений, таких как dev, qa, staging и т. д ................................ 120
Использование преимуществ кластеров ............................................................. 121
Глава 24. ECМAScript 2015 (ES6) с Node.js ............................................................ 123
Примеры ................................................................................................................................. 123
Объявления const/let ..................................................................................................... 123
Стрелочные функции .................................................................................................. 123
Пример стрелочной функции .................................................................................. 124
Деструктуризация ......................................................................................................... 124
Flow ..................................................................................................................................... 125
класс ES6 ........................................................................................................................... 125
Глава 25. Окружение .............................................................................................. 127
Примеры ................................................................................................................................. 127
Доступ к переменным окружения .......................................................................... 127
Аргументы командной строки process.argv ........................................................ 127
Использование различных свойств/конфигураций
для разных окружений, таких как dev, qa, staging и т. д ................................ 128
Глава 26. Источники собьпий .............................................................................. 131
Примечания ........................................................................................................................... 131
Примеры ................................................................................................................................. 132
Аналитика НТТР через источник событий ......................................................... 132
Основы ............................................................................................................................... 133
Получение имен событий, на которые подписаны ......................................... 134
Получение количества слушателей
зарегистрированных для определенного события .......................................... 134
Глава 27. Event loop (цикл событий) ................................................................... 136
Введение ................................................................................................................................. 136
Примеры ................................................................................................................................. 136
Event loop на псевдокоде ............................................................................................. 136
Пример однопоточного НТТР-сервера без event loop ...................................... 136
Пример много поточного НТТР-сервера без event loop .................................... 137
Пример НТТР-сервера с event loop .......................................................................... 137
Глава 28. Обработка исключений ........................................................................ 139
Примеры ................................................................................................................................. 139
Обработка исключений в Node.js ............................................................................ 139
Управление необработанными исключениями ............................................... 141
тихая обработка исключений .......................................................................... 141
Возврат к начальному состоянию .................................................................. 142
Ошибки и Promises (промисы) ................................................................................. 143
Глава 29. Вьшолнение файлов или команд
с помощью дочерних процессов ......................................................................... 144
Синтаксис ............................................................................................................................... 144
Замечания .............................................................................................................................. 144
Примеры ................................................................................................................................. 144
Создание нового процесса для вьшолнения команды ................................... 144
Создание оболочки для выполнения команды ................................................. 145
Создание процесса для запуска исполняемого файла .................................... 146
Глава 30. Экспорт и использование модулей .................................................... 148
Примечания ........................................................................................................................... 148
Примеры ................................................................................................................................. 148
Загрузка и использование модуля .......................................................................... 148
Создание модуля hello-world.js ................................................................................. 149
Признание недействительным кеша модуля .................................................... 151
Создание собственных модулей .............................................................................. 151
Каждый модуль загружается только один раз .................................................. 152
Загрузка модуля из node_modules ........................................................................... 153
Палка (директория) как модуль .............................................................................. 153
Глава 31. Экспорт и импорт модулей в Node.js .................................................. 155
Примеры ................................................................................................................................. 155
Использование простого модуля в Node.js .......................................................... 155
Использование Imports в ES6 .................................................................................... 156
Экспорт с использованием синтаксиса ES6 ........................................................ 157
Глава 32. Загрузка файлов .................................................................................... 158
Примеры ................................................................................................................................. 158
Загрузка одного файла с использованием multer ............................................. 158
Как фильтровать загрузку по расширению ........................................................ 159
Использование модуля formidahle ......................................................................... 160
Глава 33. Файловый ввод/вывод (Filesystem 1/0) .............................................. 162
Примечания ........................................................................................................................... 162
Примеры ................................................................................................................................. 162
Запись в файл с использованием writeFile
или writeFileSync ............................................................................................................ 162
Асинхронное чтение из файлов .............................................................................. 163
С использованием кодировки .......................................................................... 163
Без использования кодировки ......................................................................... 164
Относительные пути ........................................................................................... 164
Список содержимого каталога
с использованием readdir или readdirSync ......................................................... 164
Использование генератора ............................................................................... 165
Синхронное чтение из файла ................................................................................... 165
Чтение строки ........................................................................................................ 165
Удаление файла с использованием unlink или unlinkSync ........................... 166
Чтение файла в Buffeг с использованием потоков .......................................... 166
Проверка прав доступа к файлу или директории ............................................ 167
Асинхронно ............................................................................................................. 167
Синхронно ............................................................................................................... 168
Избегание состояния гонки (race conctition) при создании
или использовании существующего каталога .................................................. 168
Проверка, существует ли файл или директория ............................................... 169
Асинхронно ............................................................................................................. 169
Синхронно ............................................................................................................... 169
Клонирование файла с использованием потоков ............................................ 170
Копирование файлов с использованием соединения потоков ................... 170
Изменение содержимого текстового файла ....................................................... 171
Определение количества строк в текстовом файле ........................................ 171
Чтение файла построчно ............................................................................................ 172
Глава 34. Начало работы с профилированием Node.js .................................... 173
Введение ................................................................................................................................. 173
Замечания .............................................................................................................................. 173
Примеры ................................................................................................................................. 173
Профилирование простого приложения на Node.js ........................................ 173
Глава 35. Хороший стиль кодирования .............................................................. 176
Примечания ........................................................................................................................... 176
Примеры ................................................................................................................................. 176
Базовая программа для регистрации .................................................................... 176
Глава 36. Корректное завершение ....................................................................... 181
Примеры ................................................................................................................................. 181
Корректное завершение - SIGTERМ ..................................................................... 181
Глава 37. Grunt ......................................................................................................... 182
Примечания ........................................................................................................................... 182
Примеры ................................................................................................................................. 183
Введение в Grunt.js ........................................................................................................ 183
Установка плагинов Grunt ......................................................................................... 184
Глава 38. Совет по упрощению работы ............................................................... 186
Добавление новых расширений в requireO ........................................................ 186
Глава 39. Обработка РОSТ-запросов в Node.js .................................................... 188
Замечания .............................................................................................................................. 188
Примеры ................................................................................................................................. 189
Глава 40. Как загружаются модули ..................................................................... 190
Примеры ................................................................................................................................. 190
Режим глобальной установки .................................................................................. 190
Загрузка модулей ........................................................................................................... 190
Загрузка модуля из папки (директории) ..................................................... 191
Глава 41. НТТР ......................................................................................................... 192
Примеры ................................................................................................................................. 192
НТТР-сервер ..................................................................................................................... 192
НТТР-клиент .................................................................................................................... 193
Глава 42. Установка Node.js ................................................................................... 195
Примеры ................................................................................................................................. 195
Установка Node.js на Ubuntu ..................................................................................... 195
Использование пакетного менеджера apt .................................................. 195
Использование последней или конкретной версии
(например LTS 6.х) непосредственно из nodesource ................................ 195
Установка Node.js на Windows .................................................................................. 196
Использование Node Version Manager (nvm) ...................................................... 196
Установка Node.js из исходных кодов
с помощью пакетного менеджера АРТ .................................................................. 198
Установка Node.js на Мае
с помощью пакетного менеджера .......................................................................... 199
Homebrew ................................................................................................................. 199
Macports .................................................................................................................... 199
Установка с помощью MacOS Х Installer ............................................................... 200
Проверка установки Node .................................................................................. 200
Установка Node.js на Raspberry PI ........................................................................... 201
Установка с помощью Node Version Manager в Fish Shell с Oh Му Fish .......................... 201
Установка Node.js из исходников на CentOS, RHEL и Fedora ....................................... 202
Установка Node.js с помощью n ............................................................................... 203
Глава 43. Взаимодействие с консолью ...................................................................... 205
Синтаксис ............................................................................................................................... 205
Примеры ................................................................................................................................. 205
Логирование .................................................................................................................... 205
Модуль Console ....................................................................................................... 205
console.log ................................................................................................................................ 205
console.error ........................................................................................................................... 205
console.time, console.timeEnd ........................................................................................... 206
Модуль Process ....................................................................................................... 206
Форматирование ................................................................................................... 206
Общее ....................................................................................................................................... 207
Цвет шрифта .......................................................................................................................... 207
Цвет фона ................................................................................................................................ 207
Глава 44. Постоянное вьшолнение Nоdе.js-приложения ................................ 208
Примеры ................................................................................................................................. 208
Использование РМ2 в качестве менеджера процессов .................................. 208
Запуск и остановка daemon Forever .............................................................. 209
Непрерывная работа с помощью nohup ............................................................... 209
Управление процессами с помощью Forever ..................................................... 210
Глава 45. Фреймворк Коа v2 .................................................................................. 211
Примеры ................................................................................................................................. 211
Пример Hello World ....................................................................................................... 211
Обработка ошибок с использованием
middleware (промежуточного ПО) .......................................................................... 211
Глава 46. Lodash ...................................................................................................... 212
Введение ................................................................................................................................. 212
Примеры ................................................................................................................................. 212
Фильтрация коллекции .............................................................................................. 212
Глава 47. Loopback- RЕSТ-соединитель ............................................................ 213
Введение ................................................................................................................................. 213
Примеры ................................................................................................................................. 213
Добавление веб-соединителя ................................................................................... 213
Глава 48. metalsmith ............................................................................................... 215
Примеры ................................................................................................................................. 215
Создание простого блога ............................................................................................. 215
Глава 49. Интеграция с MongoDB ......................................................................... 217
Синтаксис ............................................................................................................................... 217
Параметры ............................................................................................................................. 217
Примеры ................................................................................................................................. 218
Подключение к MongoDB ........................................................................................... 218
Метод Connect() для MongoClient .............................................................................. 219
Добавление документа ................................................................................................ 219
Метод коллекции insertOneO .................................................................................... 219
Чтение коллекции ........................................................................................................ 220
Метод коллекции findO ............................................................................................... 220
Обновление документа ............................................................................................... 221
Метод коллекции updateOneO .................................................................................. 221
Удаление документа ..................................................................................................... 222
Метод коллекции deleteOneQ .................................................................................... 222
Удаление нескольких документов .......................................................................... 222
Метод коллекции deleteMany() ................................................................................. 223
Простое подключение ................................................................................................. 223
Простое подключение с использованием промисов ........................................................ 224
Глава 50. Интеграция MongoDB для Node.js/Express.js ................................................... 225
Введение ................................................................................................................................. 225
Примечания ........................................................................................................................... 225
Примеры ................................................................................................................................. 225
Установка MongoDB ...................................................................................................... 225
Создание модели Mongoose ....................................................................................... 226
Запрос к вашей базе данных Mongo ....................................................................... 227
Глава 51. Библиотека Mongoose ........................................................................... 228
Примеры ................................................................................................................................. 228
Подключение к MongoDB с использованием Mongoose ................................. 228
Сохранение дю-mых в MongoDB
с использованием Mongoose и маршрутов Express.js ...................................... 229
Настройка ................................................................................................................ 229
Код ............................................................................................................................... 229
Использование ....................................................................................................... 230
Поиск данных в MongoDB
с использованием Mongoose и маршрутов Express.js ...................................... 231
Настройка ................................................................................................................ 231
Код ............................................................................................................................... 231
Использование ....................................................................................................... 232
Поиск данных в MongoDB
с использованием Mongoose, маршрутов Express.js и оператора $text ..... 233
Настройка ................................................................................................................ 233
Код ............................................................................................................................... 233
Использование ....................................................................................................... 235
Индексы в моделях ....................................................................................................... 236
Полезные функции Mongoose ................................................................................... 238
Поиск данных в MongoDB с использованием промисов ................................ 238
Настройка ................................................................................................................ 238
Код ............................................................................................................................... 239
Использование ....................................................................................................... 240
Глава 52. Интеграция MSSQL ................................................................................ 242
Введение ................................................................................................................................. 242
Примечания ........................................................................................................................... 242
Примеры ................................................................................................................................. 243
Подключение к SQL через модуль npm mssql ..................................................... 243
Глава 53. Многопоточность ................................................................................... 246
Введение ................................................................................................................................. 246
Замечания .............................................................................................................................. 246
Примеры ................................................................................................................................. 246
Cluster ................................................................................................................................. 246
Child Process ..................................................................................................................... 247
Глава 54. Пул соединений MySQL ......................................................................... 249
Примеры ................................................................................................................................. 249
Исполъэование пула соединений без указани.я базы данных ..................... 249
Глава 55. Интеграция MySQL ................................................................................ 251
Введение ................................................................................................................................. 251
Примеры ................................................................................................................................. 251
Запрос объекта подключения с параметрами ................................................... 251
Использование пула соединений ........................................................................... 252
Въmолнение нескольких запросов одновременно .................................. 252
Подключение к MySQL ................................................................................................ 252
Запрос объекта соединения без параметров ...................................................... 253
Въmолнение нескольких запросов с одним соединением из пула ........... 253
Возврат запроса при возникновении ошибки ................................................... 254
Экспорт пула соединений .......................................................................................... 255
Глава 56. N-API ......................................................................................................... 256
Введение ................................................................................................................................. 256
Примеры ................................................................................................................................. 256
Приветствие в N-API ..................................................................................................... 256
Глава 57. Локализация Node.js ............................................................................. 259
Введение ................................................................................................................................. 259
Примеры ................................................................................................................................. 259
Использование модуля i18n для поддержания
локализации в приложении на Node.js ................................................................ 259
Глава 58. Сервер Node без фреймворка .............................................................. 261
Примечания ........................................................................................................................... 261
Примеры ................................................................................................................................. 261
Сервер на Node без фреймворка .............................................................................. 261
Решение проблем с CORS ............................................................................................ 262
Глава 59. Node.js (express.js) с Angular.js ............................................................ 264
Введение ................................................................................................................................. 264
Примеры ................................................................................................................................. 264
Создание проекта .......................................................................................................... 264
Как создать каркас проекта на express? ................................................................ 264
Как работает Express? .................................................................................................. 265
Установка Pug и об новление шаблонизатора Express .................................... 266
Как AngularJS вписывается во все это? .................................................................. 266
Глава 60. Node.js и MongoDB .................................................................................. 269
Примечания ........................................................................................................................... 269
Примеры ................................................................................................................................. 269
Подключение к базе данньrх ..................................................................................... 269
Установка Mongoose ..................................................................................................... 269
Создание новой коллекции ....................................................................................... 270
Вставка документов ...................................................................................................... 271
Чтение ................................................................................................................................ 271
Обновление ............................................................................................................. 272
UpdateQ ...................................................................................................................... 273
UpdateOne ................................................................................................................. 273
UpdateMany .............................................................................................................. 273
ReplaceOne ................................................................................................................ 274
Удаление ........................................................................................................................... 274
Глава 61. Архитектура и виутревня.я работа Node.js ....................................... 275
Примеры ................................................................................................................................. 275
Node.js- «под капотом» ............................................................................................. 275
Node.js - «в движении» .............................................................................................. 275
Глава 62. Код Node.js для SТDIN и SТDOUТ без исполъзования бибтютек ... 276
Введение ................................................................................................................................. 276
Примеры ................................................................................................................................. 276
Проrраt.ща ........................................................................................................................ 276
Глава 63. Основы проектирования Node.js ........................................................ 277
Примеры ................................................................................................................................. 277
Малое ядро, малые модули ........................................................................................ 277
Шаблон Reactor ............................................................................................................... 277
Неблокирующий движок ввода-въmода Node.js - liЬuv ............................... 277
Глава 64. Управлеяие опmбками в Node.js ........................................................ 278
Введение ................................................................................................................................. 278
Примеры ................................................................................................................................. 278
Создание объекта ошибки (Error) ........................................................................... 278
Выброс ошибки .............................................................................................................. 279
Блок try ... catch ................................................................................................................. 279
Глава 65. Производительность Node.js ............................................................... 281
Примеры ................................................................................................................................. 281
Цикл событий ................................................................................................................. 281
Пример блокирующей операции ................................................................... 281
Пример неблокирующей операции ввода-вывода (IO-bound) ............ 281
Рекомендации по производительности ...................................................... 282
Увеличение maxSockets ............................................................................................... 283
Основы ...................................................................................................................... 283
Установка собственного агента ....................................................................... 283
Полное отключение пула сокетов .................................................................. 283
Подводные камни .......................................................................................................... 283
Включение gzip ...................................................................................................... 283
Глава 66. Новые функции и улучшения Node.js v6 ........................................... 285
Введение ................................................................................................................................. 285
Примеры ................................................................................................................................. 285
Параметры по умолчанию для функций ............................................................. 285
Остаточные парам:етры .............................................................................................. 285
Оператор расширения (Spread Operatoi-) .............................................................. 286
Стрелочные функции (Arrow Functions) ............................................................... 286
this в стрелОЧНЬlХ функциях ...................................................................................... 286
Глава 67. Node.js с CORS ......................................................................................... 289
Примеры ................................................................................................................................. 289
Включение CORS в express.js ..................................................................................... 289
Глава 68. Node.js с ES6 ............................................................................................. 291
Введение ................................................................................................................................. 291
Примеры ................................................................................................................................. 291
Поддержка ES6 в Node.js и создание проекта с Babel ....................................... 291
Использование ES6 в вашем Nоdе.js-приложении ........................................... 293
Предварительные условия ................................................................................ 293
Глава 69. Использование Node.js с Oracle ........................................................... 297
Примеры ................................................................................................................................. 297
Подключение к Oracle DB ........................................................................................... 297
Вьmолнение запроса на объекте соединения без параметров ................... 298
Использование локального модуля для упрощения запросов .................... 299
Глава 70. Руководство для начинающих по Node. js ......................................... 301
Примеры ................................................................................................................................. 301
Hello World! ...................................................................................................................... 301
Глава 71. (!)реймворки Node.js .............................................................................. 302
Примеры ................................................................................................................................. 302
Фреймворки для веб-серверов .................................................................................. 302
Express ....................................................................................................................... 302
Коа ............................................................................................................................... 302
Фрей:мворки для интерфейса командной строки ............................................. 303
Commandeг.js ........................................................................................................... 303
Voгpa l.js ..................................................................................................................... 303
Глава 72. История Node.js ...................................................................................... 304
Введение ................................................................................................................................. 304
Ключевые события по годам ..................................................................................... 304
2009 ...................................................................................................................................... 304
2010 ...................................................................................................................................... 304
2011 ...................................................................................................................................... 304
2012 ...................................................................................................................................... 305
2013 ...................................................................................................................................... 305
2014 ...................................................................................................................................... 305
2015 ...................................................................................................................................... 306
Ql ................................................................................................................................. 306
Q2 ................................................................................................................................. 306
Q3 ................................................................................................................................. 306
Q4 ................................................................................................................................. 306
2016 ...................................................................................................................................... 307
Ql ................................................................................................................................. 307
Q2 ................................................................................................................................. 307
Q3 ................................................................................................................................. 307
Q4 ................................................................................................................................. 307
Глава 73. Маршрутизация в Node.js ..................................................................... 308
Введение ................................................................................................................................. 308
Примечания ........................................................................................................................... 308
Примеры ................................................................................................................................. 308
Маршрутизация веб-сервера Express .................................................................... 308
Глава 74. Node.js с Redis ......................................................................................... 312
Замечания .............................................................................................................................. 312
Примеры ................................................................................................................................. 312
Начало работъ1 ................................................................................................................ 312
Сохранение пар «ключ-значение>t .......................................................................... 313
Некоторые дополнительные операции, поддерживаемые node_redis .... 316
Глава 75. Node Package Manager (npm) ................................................................ 318
Введение ................................................................................................................................. 318
Синтаксис ............................................................................................................................... 318
Параметры ............................................................................................................................. 319
Примеры ................................................................................................................................. 320
Установка пакетов ........................................................................................................ 320
Введение ................................................................................................................... 320
Установка NPM ....................................................................................................... 320
Как установить пакеты ....................................................................................... 321
Установка зависимостей .................................................................................... 323
NPM за прокси-сервером .................................................................................... 324
Скоупъ1 и репозитории ................................................................................................ 325
Удаление пакетов .......................................................................................................... 325
Основы семантического версионирования ........................................................ 326
Настройка конфигурации пакетов ......................................................................... 327
Пуб.лихация пакета ....................................................................................................... 328
Запуск скриптов ............................................................................................................. 329
Удаление лишних пакетов ........................................................................................ 330
Список установленных пакетов .............................................................................. 330
Обновление npm и пакетов ....................................................................................... 331
ЗаRрепление модулей на конкретных версиях ................................................. 331
Настройка для глобально установленных пакетов ......................................... 332
Связьmание проектов для более быстрой отладки
и разработки .................................................................................................................... 333
Код помощи ............................................................................................................. 333
Шаги для связывания зависимостей проекта ........................................... 333
Шаги для связьmан:ия глобального инструмента .................................... 333
Проблемы, которые могут возникнуть ........................................................ 333
Глава 76. Node Version Manager (nvm) ................................................................ 335
Примечания ........................................................................................................................... 335
Примеры ................................................................................................................................. 335
Установка NVM ............................................................................................................... 335
Проверка версии NVМ ................................................................................................. 336
Установка конкретной версии Node ...................................................................... 336
Использование уже установленной версии node ............................................. 336
Установка nvm на Мае OSX ........................................................................................ 336
Процесс установки ............................................................................................... 336
Проверка корректности установки NVМ ..................................................... 337
Установка псевдонима для версии node .............................................................. 337
Запуск любой произвольной команды в подсистеме
с нужной версией node ............................................................................................... 338
Глава 77. OAuth 2.0 .................................................................................................. 339
Примеры ................................................................................................................................. 339
OAuth 2 с реализацией Redis - grant_type: password ...................................... 339
Глава 78. package.json ............................................................................................. 347
Зсll.tечания .............................................................................................................................. 347
Примеры ................................................................................................................................. 347
Основное описание проекта ..................................................................................... 347
Зависимости .................................................................................................................... 348
devDependencies ..................................................................................................... 348
Скриптъ1 ............................................................................................................................ 349
ПредопределеЮiые скрипты ............................................................................ 349
Пользовательские скрипты .............................................................................. 349
Расширенное определение проекта ...................................................................... 350
Изучение файла package.json .................................................................................... 351
Глава 79. Разбор аргументов командной строки .............................................. 355
Примеры ................................................................................................................................. 355
Передача действия (глагола) и значений ............................................................ 355
Передача булевых переключателей ....................................................................... 355
Глава 80. Интеграция Passport ............................................................................. 356
Примечания ........................................................................................................................... 356
Примеры ................................................................................................................................. 356
Начало работы ................................................................................................................ 356
Локальная аутентификация ...................................................................................... 357
Аутентификация через Facebook ............................................................................. 359
Простая аутентификация по имени пользователя и паролю ...................... 360
Аутентификация через Google с использованием Passport ........................... 361
Глава 81. passport.js ................................................................................................ 364
Введение ................................................................................................................................. 364
Примеры ................................................................................................................................. 364
Пример LocalStrategy в passport.js ........................................................................... 364
Глава 82. Проблемы производительности ......................................................... 366
Примеры ................................................................................................................................. 366
Обработка длительных запросов в Node.js .......................................................... 366
Глава 83. Интеграция с PostgreSQL ...................................................................... 371
Примеры ................................................................................................................................. 371
Подключение к PostgreSQL ........................................................................................ 371
Запрос с использованием объекта подключения ............................................ 371
Глава 84. Структура проекта ................................................................................. 372
Введение ................................................................................................................................. 372
Примечания ........................................................................................................................... 372
Примеры ................................................................................................................................. 372
Простое Nоdе.js-приложение с использованием МVС и API ......................... 372
Глава 85. Рush-ув едомления ................................................................................. 375
Введение ................................................................................................................................. 375
Параметры ............................................................................................................................. 375
Примеры ................................................................................................................................. 376
Веб-уведомление ............................................................................................................ 376
Apple ................................................................................................................................... 377
Глава 86. Readline .................................................................................................... 378
Синтаксис ............................................................................................................................... 378
Примеры ................................................................................................................................. 378
Построчное чтение файла .......................................................................................... 378
Запрос ввода от пользователя через CLI .............................................................. 379
Глава 87. Удаленная отладка в Node.js ................................................................ 380
Примеры ................................................................................................................................. 380
Конфигурация запуска Node.js ................................................................................. 380
Конфигурация IntelliJ/WebStorm .............................................................................. 380
Использование прокси для отладки
через порт в Linux ......................................................................................................... 381
Глава 88.
RequireO ................................................................................................................... 382
Введение ................................................................................................................................. 382
Синтаксис ............................................................................................................................... 382
Примечания ........................................................................................................................... 382
Примеры ................................................................................................................................. 382
Начало использования require() с функцией и файлом ................................. 382
Начало использования require() с NРМ-пакетом .............................................. 384
Глава 89. RESТful API: лучшие практики ............................................................ 385
Примеры ................................................................................................................................. 385
Обработка ошибок: GET всех ресурсов .................................................................. 385
Глава 90. Структура Route-Controller-Service
для Ex press. js ........................................................................................................... 387
Примеры ................................................................................................................................. 387
Структура директорий
Models Routes-Controllers-Services ............................................................................ 387
Пример структуры кода Model-Routes-Controllers-Services ............................ 388
user.model.js ............................................................................................................. 388
user.routes.js ............................................................................................................. 388
user .controllers.js .................................................................................................... 388
user.services.js ......................................................................................................... 388
Глава 91. Маршрутизация аjах-запросов
с помоIЦЪю Express.js ............................................................................................. 390
Примеры ................................................................................................................................. 390
Простая реализация AJAX ........................................................................................... 390
Глава 92. Запуск Node.js как сервиса ................................................................... 392
Введение ................................................................................................................................. 392
Примеры ................................................................................................................................. 392
Node.js как daemon systemd ........................................................................................ 392
Глава 93. Обеспечение безопасности приложений Node.js ............................ 394
Примеры ................................................................................................................................. 394
Предотвращение межсайтовой подделки запроса (CSRF) ............................. 394
SSLms в Node.js ............................................................................................................. 395
Использование НТТРS .................................................................................................. 396
Настройка НТТРS-сервера .......................................................................................... 397
Шаг 1. Создайте центр сертификации .......................................................... 397
Шаг 2. Установите свой сертификат
в качестве корневого ........................................................................................... 398
Глава 94. Отправка веб-уведомлений ................................................................. 399
Примеры ................................................................................................................................. 399
Отправка веб-уведомления с использованием
GCM (Google Cloud Messaging System) ...................................................................... 399
Глава 95. Отправка файлового потока клиенту ................................................ 402
Примеры ................................................................................................................................. 402
Использование fs и pipe для потоковой передачи
статических файлов с сервера .................................................................................. 402
Потоковая передача
с использованием fluent-ffmpeg ............................................................................... 403
Глава 96. Sequelize.js ............................................................................................... 404
Примеры ................................................................................................................................. 404
Установка .......................................................................................................................... 404
Определение моделей ................................................................................................. 405
1. sequelize.define(modelName, attributes, [options]) .................................. 406
2. sequelize.import(path) ....................................................................................... 407
Глава 97. Простой CRUD API на основе REST ...................................................... 408
Примеры ................................................................................................................................. 408
REST API для CRUD в Express 3+ ................................................................................. 408
Глава 98. Связь через Socket.io ............................................................................. 410
Примеры ................................................................................................................................. 410
«Hello world!» с сообщениями через сокеты ....................................................... 410
Глава 99. Синхронное и асинхронное программирование
в Node.js .................................................................................................................... 412
Примеры ................................................................................................................................. 412
Использование async ................................................................................................... 412
Глава 100. ТСР-сокеты ............................................................................................ 414
Примеры ................................................................................................................................. 414
Простой ТСР-сервер ....................................................................................................... 414
Простой ТСР-клиент ..................................................................................................... 415
Глава 101. Шаблонные фреймворки ................................................................... 417
Примеры ................................................................................................................................. 417
Nunjucks ............................................................................................................................. 417
Глава 102. Удаление Node.js .................................................................................. 420
Примеры ................................................................................................................................. 420
Полное удаление Node.js на Мае OSX ..................................................................... 420
Удаление Node.js на Windows .................................................................................... 420
Глава 103. Фреймворки для модульного тестирования .................................. 421
Примеры ................................................................................................................................. 421
Mocha синхронньrй ....................................................................................................... 421
Mocha асинхронный (callЬack) ................................................................................. 421
Mocha асинхронный (Promise) ................................................................................. 421
Mocha асинхронный (async/await) .......................................................................... 422
Глава 104. Сценарии исполъзоваиия Node.js ..................................................... 423
Примеры ................................................................................................................................. 423
НТТР-сервер ..................................................................................................................... 423
Консоль с командной строкой .................................................................................. 424
Глава 105. Нс.пользование Browserify
для устранения ошибки 'required' в браузерах ................................................ 426
Примеры ................................................................................................................................. 426
Пример - file.js .............................................................................................................. 426
Что делает этот фрагмент кода? ...................................................................... 426
Установка Browserify ........................................................................................... 426
Важно ......................................................................................................................... 427
Что это значит? ...................................................................................................... 427
Глава 106. Использование IISNode
для размещения веб-приложений Node.js в ПS ................................................ 428
Примечания ........................................................................................................................... 428
Проблема с виртуальным каталогом / вложенным приложением
с представлениями ............................................................................................... 428
Версии ....................................................................................................................... 428
Примеры ................................................................................................................................. 428
Начало работы ................................................................................................................ 428
Требования ............................................................................................................................. 429
Простой пример Hello World
с использованием Express .......................................................................................... 429
Структура проекта ................................................................................................ 429
sеrvеr.js-приложение на Express ..................................................................... 430
Конфигурация и Web.config .............................................................................. 430
Конфигурация ....................................................................................................................... 430
Обработчик IISNode ............................................................................................................ 430
Правила URL-Rewrite .......................................................................................................... 431
Использование виртуальноrо каталоrа IIS
или вложенного приложения .................................................................................. 431
Использование Socket.io с IISNode .......................................................................... 434
Глава 107. Использоваи:ие потоков ...................................................................... 435
Парам:етры ............................................................................................................................. 435
Примеры ................................................................................................................................. 435
Считьmание данных из текстового файла
с использованием потоков ........................................................................................ 435
Перенаправление потоков (Piping streams) ......................................................... 436
Создание собственного
читаемоrо/записьmаемоrо потока .......................................................................... 437
Зачем нужны потоки? ................................................................................................. 438
Глава 108. Использоваи:ие WebSocket с Node.js ................................................. 441
Примеры ................................................................................................................................. 441
Установка WebSocket .................................................................................................... 441
Добавление WebSocket в ваши файлы .................................................................. 441
Использование WebSocket
и WebSocket Server ........................................................................................................ 441
Простой пример WebSocket-cepвepa ...................................................................... 442
Глава 109. Веб-приложения с Express .................................................................. 443
Введение ................................................................................................................................. 443
Синтаксис ............................................................................................................................... 444
Параметры ............................................................................................................................. 444
Примеры ................................................................................................................................. 444
Начало работы ................................................................................................................ 444
Основное маршрутизирование ............................................................................... 445
Получение информации из запроса ...................................................................... 447
МодУльное приложение на Express ....................................................................... 448
Более сложный пример ...................................................................................... 449
Использование шаблонизатора ..................................................................................... 450
Пример с шаблоном EJS ...................................................................................... 450
JSON API с Express.js ...................................................................................................... 451
Обслуживание статических файлов ...................................................................... 452
Несколько папок ................................................................................................... 453
Именованные маршруты в стиле Django ............................................................. 453
Обработка ошибок ........................................................................................................ 454
Использование промежуточного ПО
и обратноrо вызова next ............................................................................................. 455
Обработка ошибок ........................................................................................................ 457
Как вьmолнить код перед любым запросом
и после любого ответа ................................................................................................. 459
Обработка РОSТ-запросов ........................................................................................... 460
Установка cookies с использованием cookie-parser .......................................... 461
Пользовательское middleware (промежуточное ПО)
в Express ............................................................................................................................ 462
Обработка ошибок в Express ..................................................................................... 462
Добавление промежуточного ПО (middleware) ................................................. 463
Hello World ....................................................................................................................... 463
Глава 110. Windоws-аутентификация в Node.js ................................................. 465
Примечания ........................................................................................................................... 465
Примеры ................................................................................................................................. 465
Использование activedirectory ................................................................................. 465
Установка ................................................................................................................. 466
Использование ....................................................................................................... 466
Глава 111. Менеджер пакетов Yarn ...................................................................... 467
Введение ................................................................................................................................. 467
Установка Yarn ...................................................................................................................... 467
macOS ................................................................................................................................. 467
Homebrew ................................................................................................................. 467
MacPorts .................................................................................................................... 467
Добавление Yam в РАТН ..................................................................................... 467
Windows ............................................................................................................................. 467
Установщик ............................................................................................................. 467
Chocolatey ................................................................................................................. 468
Linux ................................................................................................................................... 468
Deblan / Ubuntu ....................................................................................................... 468
CentOS / Fedora / RНEL .......................................................................................... 468
Arch ............................................................................................................................. 468
Solus ............................................................................................................................ 469
Все дистрибутивы ................................................................................................. 469
Альтернативный метод установки ........................................................................ 469
Скрmп оболочки ................................................................................................... 469
Tarball ........................................................................................................................ 469
NPM ............................................................................................................................. 469
После установки .................................................................................................................. 469
Создание базового пакета .......................................................................................... 469
Установка пакета с помощью Yarn ......................................................................... 470
Благодарности ........................................................................................................ 4 72