Дорогие товарищи инженеры, сообщество Метархия представляет вашему вниманию современный курс по Node.js, который включает глубокий разбор всех возможностей и аспектов платформы. Основной упор делается на то, как создавать надежные высоконагруженные сервера приложений и API без привязки к конкретному фреймворку и даже протоколу, т.е. абстрагировать бизнес-логику в отдельный слой. К лекциям прикреплено множество примеров кода, демонстрирующих гибкую структуру приложений и архитектурные приемы, в том числе работу с СУБД через слой доступа к данным, создание интерактивных приложений на вебсокетах, обеспечение безопасности, Graceful shutdown, межпроцессовое взаимодействие, предотвращение утечек памяти, масштабирование и кластеризацию при помощи процессов и потоков. На текущий момент в курсе 38 лекций (около 35 и ½ часов видео), 37 репозиториев с примерами кода, 4 PDF со слайдами. Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс по асинхронному программированию.
Введение и основы
- Node.js Введение в технологию
- Node.js в 2019 году
- Асинхронное программирование в Node.js
- Это только обзорная лекция, ссылка на курс по асинхронному программированию
находится выше, перед оглавлением
- Это только обзорная лекция, ссылка на курс по асинхронному программированию
- Обзор встроенного Node.js API
- Ссылка на документацию: https://nodejs.org/api/documentation.html
- Настройка среды: Node.js, npm, git, eslint
- Репозиторий с инстрементами: https://github.com/HowProgrammingWorks/Tools
- Работа с файлами, буферами и файловыми потоками в Node.js
- Работа с файлами: https://github.com/HowProgrammingWorks/Files
- Файловые потоки: https://github.com/HowProgrammingWorks/Streams
- Буферы: https://github.com/HowProgrammingWorks/Buffers
- Наблюдение за файловой системой в Node.js
- Файловая система в Node.js: https://github.com/HowProgrammingWorks/Files
- Наблюдение за файлами: https://github.com/HowProgrammingWorks/FilesystemWatch
- Консоль и командная строка в JavaScript и Node.js
- Примеры кода: https://github.com/HowProgrammingWorks/CommandLine
Структура и архитектура приложений на Node.js
- Архитектурный подход к программированию
- Модули, слои, структура проекта, песочницы в JavaScript и Node.js
- Пример проекта: https://github.com/HowProgrammingWorks/Project
- Абстрактные слои: https://github.com/HowProgrammingWorks/AbstractionLayers
- Песочницы: https://github.com/HowProgrammingWorks/Sandboxes
- Инверсия управления и внедрение зависимостей в Node.js
- Инверсия управления: https://github.com/HowProgrammingWorks/InversionOfControl
- Внедрение зависимостей: https://github.com/HowProgrammingWorks/DependencyInjection
- Межпроцессовое взаимодействие в Node.js
- Слои, связанность и связность кода
- Примеры кода: https://github.com/HowProgrammingWorks/Abstractions
Разработка серверов приложений и API на Node.js
- Клиент-сервер на Node.js TCP и UDP, DNS
- Примеры кода: https://github.com/HowProgrammingWorks/Socket
- HTTP сервер на Node.js (routing, cluster, IP sticky)
- Примеры кода: https://github.com/HowProgrammingWorks/NodeServer
- HTTP сессии и cookies на чистом Node.js
- Примеры кода: https://github.com/HowProgrammingWorks/Session
- HTTP запросы в браузере и Node.js: XMLHttpRequest, fetch
- Примеры кода: https://github.com/HowProgrammingWorks/HttpRequest
- Разработка API на Node.js (клиент и сервер)
- Примеры кода: https://github.com/HowProgrammingWorks/API
- WebSocket сервер на Node.js (электронные таблицы и чат)
- Скаффолдинг для API, UI и данных
- Примеры кода: https://github.com/HowProgrammingWorks/Scaffolding
- Высоконагруженные распределенные приложения на Node.js
- Отдача статики в Node.js
- Примеры кода и задачи: https://github.com/HowProgrammingWorks/ServeStatic
Работа с базами данных на Node.js
- Слой доступа к данным, курсор, транзакция
- Примеры кода: https://github.com/HowProgrammingWorks/Transaction
- Работа с базами данных в Node.js на примере PostgreSQL
- Примеры кода: https://github.com/HowProgrammingWorks/Databases
Лекции по CQRS и Event Sourcing
- Паттерн Команда (Command) действие и параметры как объект
- Этот паттерн понадобится для следующей лекции
- Примеры кода: https://github.com/HowProgrammingWorks/Command
- CQS, CQRS, Event Sourcing — Разделение запросов и модификации данных
- Применение EventSourcing
- См. примеры из предыдущей лекции
- Модель акторов (Actor Model)
- Примеры кода: https://github.com/HowProgrammingWorks/ActorModel
Управление памятью и параллельное программирование
- Утечки памяти в Node.js и JavaScript, сборка мусора и профилирование
- Примеры кода: https://github.com/HowProgrammingWorks/MemoryLeaks
- Atomics, SharedArrayBuffer, worker_threads в Node.js
- Потоки: https://github.com/HowProgrammingWorks/Threads/
- Атомарные операции: https://github.com/HowProgrammingWorks/Atomics/
- Семафоры и мьютексы в JavaScript и Node.js
- Разделяемая память в многопоточном Node.js — доклад на конференции JS Fest 2019 Spring
Безопасность, надежность, развертывание и инфраструктура
- Необработанные ошибки в промисах
- Примеры кода: https://github.com/HowProgrammingWorks/PromiseError
- Проблема асинхронного стектрейса в JavaScript и Node.js
- Примеры кода: https://github.com/HowProgrammingWorks/StackTrace
- Логирование на Node.js и JavaScript
- Примеры кода: https://github.com/HowProgrammingWorks/Logging
- Graceful Shutdown в Node.js
- Примеры кода и задачи: https://github.com/HowProgrammingWorks/GracefulShutdown
- Безопасность приложений Node.js
- Serverless Clouds (FaaS) и изоляция контекстов запросов в Node.js
Просим вас оставлять свои отзывы о курсе и пожелания по расширению материалов курса. Спасибо за интерес к нашей работе и помощь сообщества в улучшении примеров кода. Подписаться на ютюб канал с открытыми лекциями можно тут: https://www.youtube.com/TimurShemsedinov а на гитхаб автора тут: https://github.com/tshemsedinov
Автор: Timur Shemsedinov