Все курсы

Курс по Node.js

Курс для тех, кто ранее не разрабатывал на Node.JS или хочет получить хороший level-up в этой технологии.

Node.js

О курсе

Этот курс посвящён профессиональной серверной разработке на Node.js.

Мы изучим, как писать современные серверные приложения.

Основные темы курса:

  • Фундаментальное понимание Node.js: важные встроенные и сторонние модули, потоки.
  • Работа с базой данных MongoDB (с другими базами она устроена аналогично).
  • Веб-сервисы и обычные страницы для обработки сетевых запросов.
  • Авторизация, в том числе через соц. сети.
  • Непрерывное соединение и общение при помощи Websockets.
  • Тестирование: unit-тесты, функциональное и e2e тестирование.
  • А также ряд других аспектов, которые не так заметны, но тоже важно сделать правильно: конфигурация, логи, обработка ошибок, роутинг и т.п.

Этот курс временно не проводится из-за необходимости переработки программы.

Узнать о новой программе и начале набора можно, запросив уведомление.

Как организовано обучение?

Курс идёт примерно 1.5 месяца.

До начала обучения: вводные материалы

За неделю до курса мы попросим вам посмотреть видео-лекции по основам Node.js. Они довольно простые, чтобы на первом занятии вы уже что-то знали.

Мы также будем использовать систему Git/GitHub для обмена исходным кодом, так делает большинство проектов. Для тех, кому это в новинку - дадим крэш-курс и поможем разобраться.

Онлайн-занятия с преподавателем 2 раза в неделю

Занятие проходит в формате вебинара. Запись занятия доступна через 15 минут после окончания. Вы также сохраняете доступ к записям после окончания курса.

Домашние задания, обратная связь по ним

Ваши решения присылаете преподавателю, он проверяет качество кода, использование правильных приёмов проектирования, даёт обратную связь.

Чат

Между занятиями доступен групповой чат для общения и вопросов преподавателю.

Курсовой проект

Делаем курсовой проект: интернет-магазин. Большую часть кода для проекта пишете вы.

Результат

Вы хорошо разбираетесь в устройстве Node.JS, разрабатываете и отлаживаете программы на нём.

Вы знаете, как поднять проект малого и среднего размера, чтобы он стабильно работал, не падал, корректно отрабатывал при ошибках.

Вы можете разработать современный веб-сервис на Node.JS с использованием самого последнего стандарта JavaScript и фреймворков.

Сертификат

По окончанию курсов вы получаете сертификат в электронном виде на русском и английском языках.

Хотя сертификатам в нашей профессии обычно не придают значения. Главное - знания и умения, которые вы получите, если будете полноценно участвовать в курсе.

img

Программа

Занятия проходят онлайн два раза в неделю.

Собрание

Первая встреча традиционно является собранием. На нём мы знакомимся, проверяем подключение, обсуждаем организационные вопросы, взаимодействие с преподавателем, как учиться на курсе.

Фундаментальный 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 и другие, хранят все данные нашего приложения: товары, пользователей и так далее, и позволяют быстро искать среди них. Они используются почти во всех современных приложениях, исключая самые простые.

  • Общие принципы работы с базами данных:
    • NoSQL, используя Mongodb,
    • Поиск по тексту с морфологией на Elasticsearch
  • Для проекта будем использовать mongodb, поэтому изучим ключевые особенности работы с этой базой.
  • Создание REST API для работы с пользователями при помощи MongoDB и Koa.js
    • ООП при помощи Mongoose: модели, запросы, схемы, валидация и плагины.
    • Создание, сохранение и поиск пользователей в базе.
    • Индексы для быстрого поиска.
    • Валидация, обработка ошибок

Пользователи, авторизация

Авторизация для пользователей необходима практически в каждом приложении.

  • Принципы безопасного хранения паролей, использование криптографических алгоритмов для генерации хэшей.
  • Регистрация, вход и выход из приложения.
  • Пользовательские сессии (cookie для браузера, jwt для микросервисов).
  • Использование библиотеки passport.js, которая предоставляет готовые модули авторизации. Создание и подключение OAuth 2.0 стратегий на примере социальной сети vkontakte (по желанию можем рассмотреть и другие).
  • Создание серверной части для фронтенд-приложения:
      Фронтенд-часть на React.js уже написана.
    • Веб-сервисы для авторизации.

Улучшаем приложение

  • Шаблонизация (модуль pug).
  • Email: отправка, важные нюансы (внешние сервисы, защита от спама, инлайнинг стилей, картинки).
  • Архитектура сложных приложений:
    • Вложенный роутинг
    • Организация файлов и модулей проекта.
  • Интеграционное тестирование: написание скриптов, которые управляют браузером, позволяют автоматически открыть страницу, залогиниться, добавить товар в корзину и оплатить его.

После этого занятия вы умеете создавать сервер для SPA или обычного приложения с веб-сервисами, тестами, авторизацией.

При желании можно дописать к нему новые сервисы, архитектура и ваши навыки легко позволяют это.

Чаты, непрерывная подгрузка и обмен данными

Способы поддержки непрерывного соединения с сервером и получения новых данных: нужно для создания чата, онлайн-игр и других интерактивных приложений.

  • Основные приёмы и техники, их плюсы и недостатки, область применения: Long polling, Server Sent Events, Websockets.
  • Используем Websockets (при помощи socket.io) для непрерывных соединений.
  • Единая авторизация, интеграция websocket с приложением.
  • Реконнект, отслеживание состояния соединения.
  • Кластеризация при высоких нагрузках.
  • Развёртывание и запуск приложения

    На этом занятии мы обсудим важнейшие вопросы, касающиеся запуска и обновлений готового приложения на сервере, в “боевом” окружении.

    • Запуск и поддержание работы приложения.
    • Плавное обновление (рестарт без потери соединений и без даунтайма).
    • Миграции базы данных.
    • Мониторинг.
    • Менеджмент логов.
    • Примеры развёртывания:
      • Heroku с github-интеграцией
      • Тестирование с travis-ci
    • Хранение и использование секретных ключей.

    После этого занятия вы понимаете в деталях весь цикл разработки приложения: не только написания кода, но и релиза, организации логов и запуска на сервере.

    Занятие на дополнительные темы, нужные группе

    Несмотря на то, что курс является наиболее полным и покрывает все основные темы, касающиеся разработки и запуска веб-приложений на Node.js - всё равно есть темы, которые не вошли в программу курса, но обсудить их хочется.

    Это занятие отведено специально для них и строится целиком и полностью на ваших вопросах. Можем обсудить как чисто технические вопросы, например преимущества и недостатки микросервисной архитектуры или отличия протокола REST от GraphQL, так и нетехнические - например, из каких источников можно получать новую информацию.

    Курсовой проект

    Онлайн-магазин:

    • С товарами в базе данных, сгруппированными по категориям.
    • С возможностью поиска по товарам.
    • С аутентификацией и регистрацией пользователей.
    • С чатом поддержки.
    • А также с отсылкой почты и другим функционалом, важным для реальных проектов.

    Предварительные требования

    • Знание JavaScript, включая ООП, классы.
    • Понимание браузерного JavaScript/HTML/CSS (клиентский код писать не понадобится, этот курс про серверный JS).
    • Интернет 256kb/s или быстрее для видео.

    Преподаватель

    Photo
    Сергей ЗеленовВедёт курс с 28 июня 2016

    Автор программы курса по Node.JS, а также автоматизированного задачника. Занимаюсь профессионально разработкой веб-приложений с 2009 года, а с 2013 в основном использую Node.JS.

    Являюсь главным разработчиком распределенной системы хранения и обработки больших данных для машинного обучения в режиме реального времени в компании SO1.

    Также разрабатываю платформу learn.javascript.ru: локализации движка, разработка мультиязычного поиска, а также создал автоматизированную систему проверки задач для разных курсов поверх Github и TravisCI.

    Основное внимание в обучении уделяю фундаментальным вещам а также тому, как писать архитектурно грамотный, качественный и тестируемый код.

    Что говорят о курсе участники?

    Мы занимаемся обучением с 2007 года. За это время у нас обучились тысячи разработчиков из разных стран и компаний.

    Все отзывы являются честными. Мы не модерируем их.

    Курс регулярно обновляется. Все отзывы относятся к последней версии курса.

    Гарантия

    • Если объяснения будут вам непонятны
    • Если курсы не дадут вам новых знаний и умений
    • Если вы не сможете подключиться к системе онлайн-обучения

    …то вы сможете получить деньги назад.

    Для этого достаточно не позже окончания первой недели курса написать, что именно вас не устраивает, и тогда ваше участие будет прекращено, а вы получите деньги обратно.

    Для компаний

    У нас большой опыт работы с самыми разными компаниями: как маленькими, так и IT-гигантами.

    • При записи нужно выбрать способ оплаты "счёт на компанию", и документы будут автоматически сгенерированы: договор, акт и счёт, есть лицензия.
    • Для зарубежных компаний выдаём инвойс на английском языке.
    • Физическим лицам даём справку об оплате, если нужна компании для компенсации расходов.

    Физические лица также могут сделать налоговый вычет: детали для РФ.

    Подписаться на уведомления по курсу

    Курс временно не проводится. Вы можете запросить уведомление:

    Мы рассылаем уведомления только когда вы их запрашиваете, вы можете отказаться в любой момент. Подписываясь на рассылку, вы соглашаетесь с политикой конфиденциальности. Мы не передаём email третьим лицам.

    Если остались вопросы – посмотрите в часто задаваемых, напишите в комментариях внизу этой страницы или на почту help@javascript.ru (ответ обычно в течение дня), а если срочно — задайте по телефону +7-903-5419441.

    Комментарии

    перед тем как писать…
    • Если вам кажется, что в статье что-то не так - вместо комментария напишите на GitHub.
    • Для одной строки кода используйте тег <code>, для нескольких строк кода — тег <pre>, если больше 10 строк — ссылку на песочницу (plnkr, JSBin, codepen…)
    • Если что-то непонятно в статье — пишите, что именно и с какого места.