# Технологический стек Node.js 2023 Объем материала: 20 часов лекций, еженедельно 2 часа семинары в течении года, репозитории с примерами кода. Что нужно знать на входе: - [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) - [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) - Уверенно владеть git, иметь github аккаунт - Желательно docker, иметь рабочую машину на linux или mac - Любая среда разработки, IDE или редактор Ссылки на старый курс: - [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) - [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) Чем это курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js 👉 Patreon: Подписаться: https://www.patreon.com/tshemsedinov 👉 Видео обзор курса: https://youtu.be/UGGzSEfCjPU ## Содержание - Node.js Введение в технологию, обзор API, основные идеи: за счет чего реализована экономия памяти, cpu, I/O - Системы модулей CJS (`CommonJS`) and ESM (`ECMAScrip modules`), особенности в Node.js, зависимости и пакеты `npm` - Асинхронное программирование: `event loop`, `async hooks`, `race condition`, `callbacks`, `async/await`, `thenable`, `promises` - Параллельное программирование: `threads`, `semaphore`, `mutex`, `spin locks`, `Atomics`, `SharedArrayBuffer`, Web Locks API - Реактивное программирование: `Observer`, `EventEmitter`, `RxJS`, асинхронные и конкурентные очереди, `async collectors` - Изоляция кода и данных в Node.js: `vm`, `v8`, защита `global`, контекстов, модулей и прототипов от патчинга - Работа с файлами: `fs`, `Buffer`, `Stream`, `pipe`, `backpressure`, Web streams API, наблюдение за файловой системой - Структура и архитектура проекта, слои, `DDD`, `Clean architecture`, связанность и связность кода, протекание абстракций - Принципы `GRASP` и `SOLID` в `JavaScript` с адаптацией для Node.js, `IoC` (инверсия управления) и `DI` (внедрение зависимостей) - Сетевые протоколы: `HTTP(S)`, `HTTP2`, `TCP`, `UDP`, `TLS`, `Websocket`, `SSE`, `HTTP/3` (`QUIC`) - Принципы взаимодействия систем: `REST`, `RPC`, `Pipeline`, `Event-bus`, `Event-broker`, клиент-сервер, `peer-to-peer` - API на принципах транспорт-агностик и фреймворк-агностик, контракты, реализация сессий и сервиса аутентификации - Приложения, приближенные к реальному времени, интерактивность и коллаборативные приложения на вебсокетах - Распространенные паттерны и антипаттерны в приложениях на Node.js - Распределенные системы, высоконагруженные системы, балансировка нагрузки, кластеризация и масштабирование, IP sticky - Вопросы безопасности: `DoS`, `XSS`, `Path traversal`, `CSRF`, `SQL`-инъекции - Работа с базами данных, слой доступа к данным, описание структуры данных, доступ к данным, `postgres`, `redis`, `in-memory` - Сравнение подходов `domain in the middle`, `ORM`, `active record`, `repository`, `data mapper`, схемы данных, `query builder` - Утечки памяти и ресурсов, количественная оценка надежности, устойчивости, доступности, гибкости, качества - Инфраструктура и инструментарий: логирование, тестирование, линтеры, отладка, CI/CD, встроенный testing framework - `Performance hooks`, телеметрия ресурсов и оптимизация: I/O bound, CPU bound, memory bound, профилирование - `Graceful shutdown` в Node.js, работа с ошибками и исключениями, `unhandled exceptions`, `stack trace` - Встроенная криптография в Node.js (`openssl`), `addons`, `plugins`, `Node-API` (ранее `N-API`), `WASI` (Webassembly) - `Serverless` и облачные `FaaS` решения на базе Node.js - Практическое использование интроспекции, рефлекcии и скаффолдинга # Доступ План «Expert» на 1 год за $204 (+ локальные налоги) на Patreon. Помесячная подписка «Expert» не дает доступа. Доступ к матераиалам курса остается и после завершения подписки. 👉 Подписаться: https://www.patreon.com/tshemsedinov ## Дополнительные материалы - [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) - [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) - [Node.js Middleware – никогда больше!](https://youtu.be/RS8x73z4csI)