Курсы по node js
Курс по Node.js
Курс для тех, кто ранее не разрабатывал на Node.JS или хочет получить хороший level-up в этой технологии.
О курсе
Этот курс посвящён профессиональной серверной разработке на Node.js.
Мы изучим, как писать современные серверные приложения.
Основные темы курса:
- Фундаментальное понимание Node.js: важные встроенные и сторонние модули, потоки.
- Работа с базой данных MongoDB (с другими базами она устроена аналогично).
- Веб-сервисы и обычные страницы для обработки сетевых запросов.
- Авторизация, в том числе через соц. сети.
- Непрерывное соединение и общение при помощи Websockets.
- Тестирование: unit-тесты, функциональное и e2e тестирование.
- А также ряд других аспектов, которые не так заметны, но тоже важно сделать правильно: конфигурация, логи, обработка ошибок, роутинг и т.п.
Как организовано обучение?
Курс идёт примерно 1.5 месяца.
До начала обучения: вводные материалы
За неделю до курса мы попросим вам посмотреть видео-лекции по основам Node.js. Они довольно простые, чтобы на первом занятии вы уже что-то знали.
Мы также будем использовать систему Git/GitHub для обмена исходным кодом, так делает большинство проектов. Для тех, кому это в новинку — дадим крэш-курс и поможем разобраться.
Онлайн-занятия с преподавателем 2 раза в неделю
Запись занятия доступна через 15 минут после окончания. Вы также сохраняете доступ к записям после окончания курса.
Домашние задания, обратная связь по ним
Ваши решения присылаете преподавателю, он проверяет качество кода, использование правильных шаблонов проектирования, даёт обратную связь. К ряду заданий прилагаются тесты, которые частично позволяют проверить правильность решения самому.
Между занятиями доступен групповой чат для общения и вопросов преподавателю.
Курсовой проект
На этом курсе мы делаем курсовой проект. Большую часть кода для проекта вы напишете сами.
Результат
Вы хорошо разбираетесь в устройстве Node.JS, разрабатываете и отлаживаете программы на нём.
Вы знаете, как поднять проект малого и среднего размера, чтобы он стабильно работал, не падал, корректно отрабатывал при ошибках.
Вы можете разработать современный веб-сервис на Node.JS с использованием самого последнего стандарта JavaScript и фреймворков.
Сертификат
По окончанию курсов вы получаете сертификат в электронном виде на русском и английском языках.
Хотя сертификатам в нашей профессии обычно не придают значения. Главное — знания и умения, которые вы получите, если будете полноценно участвовать в курсе.
Программа
Занятия проходят онлайн два раза в неделю.
Собрание
Первая встреча традиционно является собранием. На нём мы знакомимся, проверяем подключение, обсуждаем организационные вопросы, взаимодействие с преподавателем, как учиться на курсе.
Фундаментальный Node.js
Изучим, как устроен Node.js, его внутреннюю архитектуру и основные приёмы разработки.
- Настройка окружения для разработки.
- Прием и обработка HTTP-запросов.
- Организация кода Node.js-приложения: модули в старом (commonjs) и новом (ES modules) синтаксисе.
- Отладка процесса Node.js: скрипты, утечки памяти.
- Жизнь и смерть Node.JS-процесса, событийный цикл. Макротаски и микротаски, особенности работы в Node.js.
- HTTP-сервер, асинхронная модель Node.js.
Потоки данных
Потоки данных в Node.js используются при приёме и отправке multipart-форм, файлов, больших запросах к базе данных и во многих других ситуациях.
Когда разработчики переходят от обычного JavaScript к Node.js, у них всегда возникают сложности с потоками, поэтому мы уделяем им особое внимание.
- Потоки для чтения, записи и преобразования данных. Область применения потоков, их правильное использование.
- Внутреннее устройство потоков: буферизация данных, события, методы управления потоками.
- Тип данных Buffer для бинарных данных.
- Передача данных из потока в поток, обработка ошибок в цепочке.
- Последние изменения и улучшения: потоки в Node.js постоянно меняются, мы даём самую последнюю версию.
Юнит- и функциональное тестирование
Автоматизированное тестирование используют почти во всех проектах, хотя и в разном объёме. Если его правильно применять, оно делает разработку надёжнее и проще.
- Типы тестирования, архитектурное устройство тестовых фреймворков, отличия, инструментарий.
- Написание юнит-тестов при помощи Mocha и Sinon, для тестирования классов и функций.
- Написание функциональных тестов HTTP-сервера для проверки полного цикла работы.
По окончанию этого занятия вы понимаете, как разрабатывать на Node.js, как делать сервер и правильно обрабатывать запросы, автоматически тестировать свой код.
Серверные фреймворки, Koa.js
Фреймворки облегчают написание приложений, за счет реализации типичных задач, стоящих перед разработчиком.
- Принципы устройства широко распространённых фреймворков на Node.js: express.js и koa.js (новое поколение express).
- Создаём простой сервер на koa.js.
- Архитектура вложенных middleware, приём проектирования “цепочка обязанностей”.
Реализация основных задач:
- Обработка запросов, роутинг.
- Логирование.
- Обработка ошибок.
- Чтение больших POST-запросов.
- Отдача статических файлов.
- Конфигурация приложения в разных окружениях.
Базы данных
Базы данных, такие как MongoDB, MySQL, Oracle и другие, хранят все данные нашего приложения: товары, пользователей и так далее, и позволяют быстро искать среди них. Они используются почти во всех современных приложениях, исключая самые простые.
- Общие принципы работы с базами данных:
- SQL на примере PostgreSQL,
- NoSQL, используя Mongodb,
- Поиск по тексту с морфологией на Elasticsearch
- Для проекта будем использовать mongodb, поэтому изучим ключевые особенности работы с этой базой.
- Создание REST API для работы с пользователями при помощи MongoDB и Koa.js
- ООП при помощи Mongoose: модели, запросы, схемы, валидация и плагины.
- Создание, сохранение и поиск пользователей в базе.
- Индексы для быстрого поиска.
- Валидация, обработка ошибок
Пользователи, авторизация
Авторизация для пользователей необходима практически в каждом приложении.
- Принципы безопасного хранения паролей, использование криптографических алгоритмов для генерации хэшей.
- Регистрация, вход и выход из приложения.
- Пользовательские сессии (cookie для браузера, jwt для микросервисов).
- Использование библиотеки passport.js, которая предоставляет готовые модули авторизации. Создание и подключение OAuth 2.0 стратегий на примере социальной сети vkontakte (по желанию можем рассмотреть и другие).
- Создание серверной части для фронтенд-приложения:
- Фронтенд-часть на React.js уже написана.
- Веб-сервисы для авторизации.
Улучшаем приложение
- Шаблонизация (модуль pug).
- Email: отправка, важные нюансы (внешние сервисы, защита от спама, инлайнинг стилей, картинки).
- CSRF-защита от взлома для форм и AJAX.
- Архитектура сложных приложений:
- Вложенный роутинг
- Организация файлов и модулей проекта.
- Интеграционное тестирование: написание скриптов, которые управляют браузером, позволяют автоматически открыть страницу, залогиниться, добавить товар в корзину и оплатить его.
После этого занятия вы умеете создавать сервер для SPA или обычного приложения с веб-сервисами, тестами, авторизацией.
При желании можно дописать к нему новые сервисы, архитектура и ваши навыки легко позволяют это.
Чаты, непрерывная подгрузка и обмен данными
Способы поддержки непрерывного соединения с сервером и получения новых данных: нужно для создания чата, онлайн-игр и других интерактивных приложений.
Развёртывание и запуск приложения
На этом занятии мы обсудим важнейшие вопросы, касающиеся запуска и обновлений готового приложения на сервере, в “боевом” окружении.
- Запуск и поддержание работы приложения.
- Плавное обновление (рестарт без потери соединений и без даунтайма).
- Миграции базы данных.
- Мониторинг.
- Менеджмент логов.
- Примеры развёртывания:
- Heroku с github-интеграцией
- Тестирование с travis-ci
- Хранение и использование секретных ключей.
После этого занятия вы понимаете в деталях весь цикл разработки приложения: не только написания кода, но и релиза, организации логов и запуска на сервере.
Занятие на дополнительные темы, нужные группе
Несмотря на то, что курс является наиболее полным и покрывает все основные темы, касающиеся разработки и запуска веб-приложений на Node.js — всё равно есть темы, которые не вошли в программу курса, но обсудить их хочется.
Это занятие отведено специально для них и строится целиком и полностью на ваших вопросах. Можем обсудить как чисто технические вопросы, например преимущества и недостатки микросервисной архитектуры или отличия протокола REST от GraphQL, так и нетехнические — например, из каких источников можно получать новую информацию.
Курсовой проект
Онлайн-магазин с авторизацией, поиском товаров, чатом поддержки
Курс по Node.JS (2018)
Курс для тех, кто ранее не разрабатывал на Node.JS или хочет получить хороший level-up в этой технологии. Этот курс посвящён профессиональной Node.JS-разработке. В результате курса вы создадите реальный проект и, главное, хорошо разберётесь в Node.JS. Мы будем использовать современные практики разработки, а не те, которые, хоть и широко представлены в интернете, но давно устарели. Вы получите комплексное понимание, как строить архитектуру для Node.JS, какие задачи и как решать.
Курс можно условно разделить на три части.
Node.JS, главные «строительные блоки» разработчика.
Разработка веб-сервисов на современных технологиях и фреймворках.
Архитектура сложных приложений, организация проекта.
Первая часть курса
- Фундаментальный Node.JS
Здесь мы изучим особенности работы Node.JS, его важнейшие модули и приёмы разработки.- Настройка окружения, редактора, инструменты для разработки и отладки.
- Модули: организация, подключение.
- Встроенные модули http, path, fs, events и другие.
- Все стадии жизни Node.JS-процесса, важные для разработчика.
- Потоки в Node.JS, частые ошибки при работе с ними.
- Сервер на Node.JS
Создадим код и тесты для веб-сервера на Node.JS, а также разберёмся с асинхронностью.- Создание чат-сервера на Node.JS, частые ошибки.
- Тестирование с использованием mocha, supertest и других фреймворков.
- Асинхронный код
Изучим способы работы с асинхронным кодом, делающие его простым и удобным.- Асинхронность через callback’и, модуль async (old school).
- Promises, Iterators, Generators, их особенности в Node.JS
- Объединение Promises + Generators, «плоский» асинхронный код через библиотеку «co».
По окончанию первой части курса вы понимаете, как разрабатывать на Node.JS, как делать сервер и правильно обрабатывать запросы, автоматически тестировать свой код.
Вторая часть курса
- Работа с базой данных
Мы будем использовать MongoDB, однако изучаемые принципы применимы к другим базам, в частности MySQL, PostgreSQL, Redis и т.п.- База MongoDB, её особенности.
- Объектно-ориентированная работа с MongoDB через Mongoose.
- Полная картина работы с базой: запросы, схемы, валидация, плагины и middleware.
- Современный веб-сервис
- Фреймворк Koa.JS: основы, роутинг.
- Конфигурация через модуль config.
- Koa.JS: структура middleware, готовые middleware – какие внешние модули для чего использовать.
- CLS и его грамотное использование для получения текущего запроса в любом модуле.
- Правильное логирование и обработка ошибок.
- Улучшенное тестирование, загрузка фикстур.
- Gulp для запуска задач
- Типы задач gulp, написание своих задач.
- Запуск сервера, загрузка фикстур и тестирование через gulp
- Авторизация с Passport.JS
- Модель пользователя, регистрация.
- Сессии с Node.JS.
- Passport.JS: сериализация, стратегии, авторизация.
- CSRF-защита от взлома для форм и AJAX.
- COMET при помощи Socket.IO
- Вебсокеты.
- Обмен сообщениями при помощи Socket.IO.
- Интеграция Socket.IO с Koa.JS, авторизацией и другими сервисами.
- По окончании этой части мы умеем создавать сервер со страницами, веб-сервисами, авторизацией и чатом.
При желании можно дописать к нему новые сервисы и страницы, существующая архитектура позволяет это.
Третья часть курса
- Архитектура проекта
В среднем Node.JS-проекте – сотни файлов. Это нормально, и даже вполне удобно, если их правильно организовать.- Архитектура HMVC для Koa.JS.
- Организация шаблонов, тестов, клиентских скриптов.
- Выкладка Production
- Организация git-репозитария и модулей.
- Запуск с кластеризацией на все ядра процессора через PM2.
- Обзор методов deployment’а.
После окончания третьей части вы понимаете, как разрабатывается современный Node.JS-проект и можете производить такую разработку самостоятельно.
Примечание: будет интересно также тем, кто уже просматривал такой же курс ранее. Курс на 50% опирается на вопросы участников, поэтому в разных группах могут быть рассмотрены разные нюансы разработки.
Фундаментальный курс
Node.js + Express + MongoDB
Через 3 месяца вы незаменимый специалист с зарплатой мечты!
Изучи Node.js — стань fullstack разработчиком
3 месяца интенсива
Изучи Node.js — посмотри на backend с другой стороны
Узнай как JavaScript работает на backend
Ты готов разобраться в Node.js полностью?
Сделай это за 3 месяца
Курс включает в себя
Пройдя курс, вы научитесь
Курс состоит
Автор и преподаватель курса
Senior Backend Developer
Меня зовут Александр Кириченко, я работаю бекенд разработчиком уже более 12 лет. Из них 3 года работал в компании SoftServe.
Начинал свою карьеру разработчиком и администратором баз данных Informix, Oracle.
Постепенно переключился на бекенд разработку на Java. Как Java разработчик принимал участие в 7 enterprise проектах.
В каждом из проектов приходилось заниматься разработкой на всех уровнях, начиная от базы данных и заканчивая уровнем представления (JavaScript, HTML, CSS).
В данное время работаю в E-commerce проекте. Занимаюсь проблемами микросервисной архитектуры и машинного обучения.
Учитывая специфику проекта, для реализации микросервисов мы используем Java, Python, Node.js и облачные технологии.
В качестве хранилища данных — MongoDB — документоориентированную систему управления базами данных.
На данный момент у меня более 4 лет опыта работы с MongoDB на нескольких проектах.
Активно интересуюсь Big data и NoSQL технологиями, вопросами разработки высоконагруженных приложений.
Меня зовут Александр Кириченко, я работаю бекенд разработчиком уже более 12 лет. Из них 3 года работал в компании SoftServe.
Начинал свою карьеру разработчиком и администратором баз данных Informix, Oracle.
Постепенно переключился на бекенд разработку на Java. Как Java разработчик принимал участие в 7 enterprise проектах.
В каждом из проектов приходилось заниматься разработкой на всех уровнях, начиная от базы данных и заканчивая уровнем представления (JavaScript, HTML, CSS).
В данное время работаю в E-commerce проекте. Занимаюсь проблемами микросервисной архитектуры и машинного обучения.
Учитывая специфику проекта, для реализации микросервисов мы используем Java, Python, Node.js и облачные технологии.
В качестве хранилища данных — MongoDB — документоориентированную систему управления базами данных.
На данный момент у меня более 4 лет опыта работы с MongoDB на нескольких проектах.
Активно интересуюсь Big data и NoSQL технологиями, вопросами разработки высоконагруженных приложений.