|
| 1 | +# Технологический стек Node.js 2022-2023 |
| 2 | + |
| 3 | +Объем материала: 20 часов лекций, еженедельно 2 часа семинары в течении года, репозитории с примерами кода. |
| 4 | +Что нужно знать на входе: |
| 5 | +- [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md) |
| 6 | +- [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md) |
| 7 | +- Уверенно владеть git, иметь github аккаунт |
| 8 | +- Желательно docker, иметь рабочую машину на linux или mac |
| 9 | +- Любая среда разработки, IDE или редактор |
| 10 | + |
| 11 | +Ссылки на старый курс: |
| 12 | +- [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md) |
| 13 | +- [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md) |
| 14 | + |
| 15 | +## До начала |
| 16 | + |
| 17 | +Пока курс готовится, предлагаю посмотреть доклады: |
| 18 | + |
| 19 | +- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs) |
| 20 | +- [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk) |
| 21 | +- [Node.js Middleware – никогда больше!](https://youtu.be/RS8x73z4csI) |
| 22 | + |
| 23 | +## Содержание |
| 24 | + |
| 25 | +- Node.js Введение в технологию, обзор API, основные идеи: за счет чего реализована экономия памяти, cpu, I/O |
| 26 | +- Системы модулей CJS (`CommonJS`) and ESM (`ECMAScrip modules`), особенности в Node.js, зависимости и пакеты `npm` |
| 27 | +- Асинхронное программирование: `event loop`, `async hooks`, `race condition`, `callbacks`, `async/await`, `thenable`, `promises` |
| 28 | +- Параллельное программирование: `threads`, `semaphore`, `mutex`, `spin locks`, `Atomics`, `SharedArrayBuffer`, Web Locks API |
| 29 | +- Реактивное программирование: `Observer`, `EventEmitter`, `RxJS`, асинхронные и конкурентные очереди, `async collectors` |
| 30 | +- Изоляция кода и данных в Node.js: модели `vm` и `v8`, защита `global`, контекстов, модулей и прототипов от патчинга |
| 31 | +- Работа с файлами: `fs`, `Buffer`, `Stream`, `pipe`, `backpressure`, Web streams API, наблюдение за файловой системой |
| 32 | +- Структура и архитектура проекта, слои, `DDD`, `Clean architecture`, связанность и связность кода, протекание абстракций |
| 33 | +- Принципы `GRASP` и `SOLID` в `JavaScript` с адаптацией для Node.js, `IoC` (инверсия управления) и `DI` (внедрение зависимостей) |
| 34 | +- Сетевые протоколы: `HTTP(S)`, `HTTP2`, `TCP`, `UDP`, `TLS`, `Websocket`, `SSE`, `HTTP/3` (`QUIC`) |
| 35 | +- Принципы взаимодействия систем: `REST`, `RPC`, `Pipeline`, `Event-bus`, `Event-broker`, клиент-сервер, `peer-to-peer` |
| 36 | +- API на принципах транспорт-агностик и фреймворк-агностик, контракты, реализация сессий и сервиса аутентификации |
| 37 | +- Приложения, приближенные к реальному времени, интерактивность и коллаборативные приложения на вебсокетах |
| 38 | +- Распространенные паттерны и антипаттерны в приложениях на Node.js |
| 39 | +- Распределенные системы, высоконагруженные системы, балансировка нагрузки, кластеризация и масштабирование, IP sticky |
| 40 | +- Вопросы безопасности: `DoS`, `XSS`, `Path traversal`, `CSRF`, `SQL`-инъекции |
| 41 | +- Работа с базами данных, слой доступа к данным, описание структуры данных, доступ к данным, `postgres`, `redis`, `in-memory` |
| 42 | +- Сравнение подходов `domain in the middle`, `ORM`, `active record`, `repository`, `data mapper`, схемы данных, `query builder` |
| 43 | +- Утечки памяти и ресурсов, количественная оценка надежности, устойчивости, доступности, гибкости, качества |
| 44 | +- Инфраструктура и инструментарий: логирование, тестирование, линтеры, отладка, CI/CD, встроенный testing framework |
| 45 | +- `Performance hooks`, телеметрия ресурсов и оптимизация: I/O bound, CPU bound, memory bound, профилирование |
| 46 | +- `Graceful shutdown` в Node.js, работа с ошибками и исключениями, `unhandled exceptions`, `stack trace` |
| 47 | +- Встроенная криптография в Node.js (`openssl`), `addons`, `plugins`, `Node-API` (ранее `N-API`), `WASI` (Webassembly) |
| 48 | +- `Serverless` и облачные `FaaS` решения на базе Node.js |
| 49 | +- Практическое использование интроспекции, рефлекcии и скаффолдинга |
0 commit comments