Представляем практическое руководство для широкого круга разработчиков на JavaScript по освоению серверной платформы Node.js на реальных проектах.

Книга проводит читателя от настройки окружения до создания современных бэкенд-приложений: агрегатора контента, менеджера паролей, веб-парсера, анализа тональности текста, маркетинговой рассылки, системы аутентификации с JWT, децентрализованного музыкального маркетплейса и ИИ-ассистента на основе Google Gemini API. Каждый проект построен по принципам инженерного мышления: планирование, чистый код и архитектура, итеративная разработка. Рассматриваются работа с Fastify, MongoDB, Redis, асинхронное программирование, функции реального времени и безопасность. Описаны способы перехода от прототипов к масштабируемым продакшн-решениям.

Все используемые в книге инструменты - с открытым исходным кодом: Fastify, MongoDB, Redis, RabbitMQ, Puppeteer, SQLite. Они не требуют зарубежных аккаунтов, платных подписок или облачных провайдеров. Все это устанавливается локально или на своем сервере.

Единственное исключение составляет Google Gemini API в финальной главе. Но его безболезненно можно заменить на российские аналоги: Yandex GPT или GigaChat. Книга дает универсальный инженерный подход, который работает с любыми инструментами, а полученные навыки применимы в любых условиях.

Проекты выстроены по принципу «от простого к сложному», и каждый следующий надстраивается над предыдущим. При этом каждый проект добавляет новый инструмент и учит выбирать архитектуру под задачу. К концу книги у читателя должна сложиться целостная картина того, как строятся современные бэкенд-системы.

Главы построены по единому шаблону. Сначала дается краткое введение в тему и перечисляются инструменты, необходимые для проекта. Затем описывается реалистичная задача от вымышленного заказчика, после чего автор предлагает спроектировать решение, определить схему потоков данных, выбрать архитектуру и компоненты.

Основную часть глав составляет пошаговая реализация кода, от простого скелета приложения до полноценного рабочего продукта. В конце каждой главы даются практические упражнения для закрепления материала и краткое резюме. Такой подход позволяет читателю последовательно осваивать новые технологии, при этом проекты становятся сложнее от главы к главе.

Глава 1. Введение и настройка

Подготовка среды разработки. Установка Visual Studio Code и знакомство с основами платформы.

Описана архитектура Node.js, цикл обработки событий и библиотека Libuv. Рассмотрены потоки, буферы и кластеризация для масштабирования приложений.

Основное внимание уделено фреймворку Fastify, который используется во всех проектах книги. Fastify. Это проект с открытым исходным кодом (MIT-лицензия), и его можно использовать в России без ограничений.

Приведено сравнение Fastify с Express, Koa и Hapi.

Практические упражнения: проверка установки Node и VS Code через создание файла index.js, инициализация и запуск шаблонного проекта Fastify на порту 3000.

Результат: среда полностью готова к разработке.

Глава 2. Практическое применение

Создание простого приложения для работы с командной строкой. Читатель разрабатывает скрипт, который преобразует контактные данные из физических карточек в CSV-файл.

Рассмотрена работа со встроенными модулями Node. Для чтения пользовательского ввода используется модуль readline, для записи данных в файл модуль fs. Показано, как с помощью модулей ввода readline и записи fs организовать интерактивный диалог с пользователем в терминале.

Затем код рефакторится с использованием внешних пакетов prompt и csv-writer. Что демонстрирует эволюцию кода: сначала решение на встроенных средствах, затем улучшение с помощью сторонних библиотек.

Упражнения: проверка email и номера телефона, добавление временной метки в каждую запись.

Результат: работающее CLI-приложение для сбора контактной информации и сохранения ее в структурированном формате.

Глава 3. Создание веб-сервера Node

Использование фреймворка Fastify. Читатель разрабатывает приложение для местного ресторана, которое отображает лендинг, меню и часы работы.

Рассмотрена работа с маршрутами Fastify для обработки HTTP-запросов. Для отображения страниц используется шаблонизатор EJS и плагин @fastify/view. Данные меню и времени работы вынесены в отдельные модули, что демонстрирует организацию кода проекта.

Затем добавляются статические ресурсы с помощью плагина @fastify/static. Подключение CSS-стилей улучшает внешний вид страниц. Проект эволюционирует от простого текстового ответа к полноценному веб-сайту с версткой.

Упражнения: добавление страницы «О ресторане», отображение текущего статуса работы заведения.

Результат: работающий веб-сервер на Fastify с тремя страницами, стилизованными с помощью CSS, и понимание принципов обработки запросов.

Глава 4. Создание безопасного локального менеджера паролей

Создание приложения для управления паролями с хешированием. Читатель разрабатывает локальный менеджер паролей, который защищает данные с помощью мастер-пароля.

Рассмотрена работа с библиотекой bcrypt для хеширования паролей. Показано, как хешируется мастер-пароль и как выполняется сравнение введенного пароля с сохраненным хешем. На начальном этапе данные хранятся в памяти приложения (mockDB), для ввода используется пакет prompt-sync.

Затем добавляется MongoDB для постоянного хранения. Читатель подключается к локальной базе данных, создает коллекции auth и passwords, заменяет временное хранилище на запросы к БД. Показано, как сохранять хеш мастер-пароля и управлять списком паролей через findOneAndUpdate.

Упражнения: настройка количества раундов соли, поиск пароля по имени источника.

Результат: работающее приложение для хранения паролей с хешированным мастер-паролем, постоянным хранением в MongoDB и возможностью просмотра сохраненных паролей.

Более коротко о последующих главах.

Глава 5. Агрегация контента. Парсинг RSS-фидов и API, создание агрегатора контента с фильтрацией по ключевым словам. Использование пакетов rss-parser и fetch.

Глава 6. Создание API для библиотеки. RESTful API на Fastify с CRUD-операциями, подключение к SQLite через Sequelize. Маршрутизация, работа с моделями.

Глава 7. Анализ настроений с помощью обработчика естественного языка. Приложение для анализа тональности текста с использованием NLP-пакетов (natural, sentiment). Предварительная обработка текста: исправление орфографии, токенизация, стемминг, удаление стоп-слов. Визуализация результатов в консоли с asciichart.

Глава 8. Приложение для маркетинговой рассылки.  Отправка email через nodemailer, сбор и валидация адресов, верификация, отслеживание открытий писем с помощью маркетингового пикселя, планировщик задач (node-schedule).

Глава 9. Приложение для веб-скраппинга. Парсинг HTML с cheerio, использование безголового браузера Puppeteer для сайтов с динамическим контентом.

Глава 10. Аутентификация приложения. Реализация входа/регистрации с Passport.js, хеширование паролей через crypto.pbkdf2, поддержка сессий и JWT для API-аутентификации.

Глава 11. Приложение для управления заказами.  Системы очередей, от простого массива до Redis (Pub/Sub) и RabbitMQ. Разделение на микросервисы (основной, выполнения, аналитики).

Глава 12. Блокчейн-рынок музыкальных лейблов. Создание собственного блокчейна, классы Block, Blockchain, Transaction, MarketplaceNode. Майнинг, консенсус, синхронизация узлов.

Глава 13. Создание обучающего ассистента на базе искусственного интеллекта. Интеграция с Google Gemini API, промт-инжиниринг, персонализация ответов на основе профиля обучения, JWT-аутентификация, хранение данных в SQLite.

Приложения.  Подсказки по инициализации проектов, настройка инструментов (Git, ESLint, Prettier, Postman, nodemon), работа с базами данных (MongoDB, PostgreSQL, SQLite, Redis, RabbitMQ), контейнеризация с Docker, настройка аккаунтов и API-ключей.

Книга подойдет как начинающим разработчикам, так и тем, кто хочет углубить знания в серверной разработке на JavaScript. Каждый проект представляет законченное приложение с постепенным наращиванием сложности, что позволяет последовательно развивать навыки и получать положительный результат.

Об авторе

Джонатан Векслер, автор известного бестселлера «Get Programming with Node.js» (Manning, 2019). разработчик с глубоким бэкграундом в теории вычислений и веб-разработке, работает старшим разработчиком в финансовой медиакомпании Bloomberg LP. Он курировал учебную программу по Node.js в качестве академического директора и ведущего разработчика в учебном центре New York Code and Design Academy, обучал студентов на интенсивных курсах по fullstack-разработке. 

 

Комментарии (0)