Skip to content

Commit 7565650

Browse files
committed
Add Node.js in 2022-2023
1 parent e2d383f commit 7565650

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

Courses/NodeJS-2022-2023.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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

Comments
 (0)