На продажнике идет уже запись на новый поток. Данная складчина делается на завершенный поток начало 2018 года О КУРСЕ Курс предназначен для для разработчиков уровня Junior и Middle, которые имеют общее представление и опыт работы с Web и хотят узнать больше о мире современного JavaScript. По окончании курса вы сможете: - Понимать принципы работы современных JavaScript фреймворков и библиотек - Применять паттерны проектирования (Event Loop, Flux, Immutable, Virtual DOM, Dependency Injection, Observables) - Знать подходы при проектировании, организации, контроля состояния и тестирования серверных и клиентских приложений - Выбирать подходящие инструменты для проекта - Тестировать проект unit-тестами на разных уровнях - Создавать веб-приложения с использованием современных технологий Особенности курса: В рамках курса мы рассмотрим ключевые особенности JavaScript - замыкания, особенности ООП и SOLID в JS, функционального и реактивного программирования, Promises и другие возможности ES6, Event Loop, а также разберём DOM API, Ajax и события в рамках разработки в браузере, и, конечно, прокачаем навыки в HTML и CSS. Научимся писать код на диалектах JavaScript, таких как TypeScript и JSX. Помимо разработки клиентской части в браузере, мы также будем использовать серверную платформу NodeJS и её окружение. Изучим популярный фреймворк Angular с реактивными возможностями RxJS, а также библиотеки для написания web-приложений - ReactJS, Redux и современные подходы к разработке UI, такие как Polymer и набирающий звёзды Vue. Мы будем собирать проекты для production с помощью Webpack, хранить данные в MongoDB, использовать TDD подход и писать тесты на различных фреймворках и уровнях. С собой вы сможете забрать с курса: - видеозаписи всех вебинаров; - презентации к занятиям, а также дополнительные материалы; - решение задач и проектов в виде кода на github; - хорошие воспоминания; - сертификат о прохождении курса. ПРОГРАММА КУРСА Спойлер: МОДУЛЬ №1: JavaScript Введение в курс Участники смогут: - Познакомиться с преподавателем и с программой курса, понимать как она построена и какие полезные навыки они получат - Вспомнить основные возможности языка JavaScript - Применять техники языка, которые помогут при изучении фреймворков JavaScript. Работа с браузером Участники смогут: - Решать специфичные для браузерной разработки задачи на языке JavaScript - Освоить и вспомнить теорию, которая будет базисом для последующих уроков Браузерные возможности JS Основные концепции Node - Modules, Events, Errors Участники смогут: - Запускать скрипты на платформе Node - Работать с базовыми понятиями Node - Events и Errors - Использовать ES6 Imports и стандартный способ загрузки модулей Стандартная библиотека Node - EventLoop, Streams, HTTP Участники смогут: - Ориентироваться в понятии EventLoop и особенностях работы Timers - Использовать классы, объекты и функции модуля Streams - Работать c HTTP запросами в Node Пакетный менеджер NPM и возможности package.json. Node Best Practices Участники смогут: - Работать с пакетным менеджером NPM - Управлять зависимостями и автоматизировать задачи с помощью package.json - Различать корректные и ошибочные техники при написании серверного JavaScript кода - Работать с дочерними процессами в Node Express - Web-сервер на JS, Стек MEAN, MongoDB Участники смогут: - Создавать простые приложения с использованием библиотеки Express, а также базы данных MongoDB Построение Rest API, TDD и Unit-тестирование с Jest Участники смогут: - Понимать и добавлять общие стандарты создания API - Писать и запускать тесты для серверного JavaScript Спойлер: МОДУЛЬ №2: UI Libraries UI Libraries Основы React и JSX Участники смогут: - Настроить себе окружение для работы с React и использовать его - Понимать и применять синтаксис JSX - Создавать простые приложения на React Компоненты React. Lifecycle React-компонент, state и props Участники смогут: - Разрабатывать полноценные React-компоненты в различных стилях. - Корректно использовать state и props." Состояние приложения. Flux и Redux Участники смогут: - "Отличать основные понятия однонаправленной архитектуры Flux. - Ориентироваться и использовать возможности redux - создавать actions, reducers, а также применять redux в связке в React Routing в React. Оптимизация приложения - Создавать систему routing для React приложений, использовать библиотеку react-router - Использовать специальные возможности библиотеки для оптимизации отрисовки" Специфика построений приложений в React, Best Practices Эффективно разрабатывать приложения на React, учитывая последние тенденции в разработке front-end. Использовать Advanced React. Применять на практике Best-Practices разработки на React Основы Vue Участники смогут: - Настроить себе окружение IDE, зависимости и библиотеки для создания проектов и работы с Vue - Создавать простейшие приложения используя Vue Компоненты, шаблонизатор и формы Участники смогут - Понимать синтаксис шаблонизаторы - Создавать компоненты, описывать атрибуты элементов Routing и модели данных Участники смогут: - Описывать routing для Vue приложений - Создавать формы, связывая шаблоны с моделями Advanced Vue Участники смогут: - Применять анимацию в компонентах - Создавать плагины - Разбираться в тонкостях Change Detection Обзор Polymer Участники смогут - Создавать custom elements, используя встроенные браузерные возможности - Подключать и использовать Polymer для создания приложений - Ориентироваться в веб спецификациях, на базе которых работает Polymer Все суть компоненты Участники смогут: - Подключать и использовать веб-компоненты в приложениях - Создавать Polymer компоненты, решающие функциональные и композиционные задачи Специфика построения приложений на Polymer Участники смогут: - Разрабатывать приложения с использованием Polymer - Понимать и определять структуру кода, использовать инструменты для сборки и оптимизации приложений Спойлер: МОДУЛЬ №3: Angular Angular Введение в Angular Участники смогут: - Настроить себе окружение IDE, а также скачать зависимости и библиотеки, коммандные утилиты для TypeScript и создания проектов для работы с Angular - Различать TypeScript и JavaScript - Писать и понимать код на языке TypeScript TypeScript Различать TypeScript и JavaScript, использовать преимущества статической типизации. Писать и понимать код на языке TypeScript, разрабатывать приложения в полноценном объектно-ориентированном стиле. Компоненты и директивы Участники смогут: - Декомпозировать макет страницы на компоненты - Различать директивы и компоненты во фреймворке Angular - Создавать простые директивы и компоненты Observables. RxJS Участники смогут: - Отличать основные понятия паттерна - Observable, Observer, Subscriber, Operator - Применять шаблон проектирования Observables, используя библиотеку RxJS Сервисы Участники смогут создавать сервисы для получения, отправки и хранения данных для приложений Angular Состояние приложения Участники смогут разбираться в особенностях шаблона проектирования Dependency Injection и его имплементации в Angular Создание и управление формами в Angular Участники смогут: - Создавать формы, используя техники Dynamic Forms, Reactive Forms - Описывать валидацию и другие функции для элементов форм Routing Участники смогут: - Создавать Routing систему для приложений, используя внутренние подходы Angular - такие как Router, router-outlet и другие - Понимать и применять хэндлеры навигации Guards Тестирование в Angular Участники смогут писать и запускать тесты для приложений Angular Сборка приложений для Production Участники смогут: - Настраивать сборку приложений Angular - Использовать возможность сборки Server-side Rendering Спойлер: МОДУЛЬ №4 Практическая работа Заключительный месяц курса посвящен проектной работе. Это то, чем интересно заниматься студенту на базе знаний, полученных на курсе. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей. Проект должен стать примером кода, который можно показывать потенциальным работодателям. Примеры тем проекта: - Task Runner для создания части Continuous Integration цикла. - Reciept Roulette для управления и рекомендации рецептов. - Elements Dashboard - магазин Web компонент, созданных на одном из библиотек. В приложении можно видеть рейтинг, демонстрацию и документацию зарегистрированных элементов. Возможные технологии для проектов - Node + Vue/Angular/React/Polymer. Участники смогут: - Выделять характеристики проектов и окружения - Решать задачи выбора и сравнения фреймворков, понимать их преимущства и недостатки Спойлер: ПРЕПОДАВАТЕЛЬ Александр Коржиков Программист с восьмилетним опытом разработки, в основном в области Front End. Получил степень специалиста в университете по специальности прикладной математики и кибернетики. Заинтересовался WEB-разработкой еще в университете. В первую очередь тем, что в ней сразу виден результат работы. С другой стороны, кажущаяся простота скрывает много сложных и интересных задач. Большую часть карьеры программировал на JavaScript, начиная c 2010 года в компании Альпари. После этого работал в стартапе Comindware, в банке Тинькофф, в голландской IT компании Backbase. Сейчас работает в международной финансовой корпорации ING, главный офис которой находится в Амстердаме. Занимается проектированием и поддержкой процессов WEB-разработки. Продажник: