|
12 | 12 | +e('h2').title.phone-only Первая часть курса |
13 | 13 | ol |
14 | 14 | li |
15 | | - strong Основной JavaScript. |
16 | | - p Здесь мы изучим сам язык, его конструкции и особенности, которые позволяют "разговаривать" на JavaScript коротко, понятно, а главное - без ошибок. |
| 15 | + strong Фундаментальный Node.JS |
| 16 | + p Здесь мы изучим особенности работы Node.JS, его важнейшие модули и приёмы разработки. |
| 17 | + p Мы используем наше знание браузерного JavaScript, чтобы изучить их быстрее. |
17 | 18 | ul |
18 | | - li IDE, настройка, полезные приёмы использования, средства для автопроверки кода. |
19 | | - li Основные структуры данных, работа с числами, строками, датами, массивами, объектами. |
20 | | - li Инструменты разработки, отладка в браузерах. |
21 | | - li Автоматизированное тестирование, инструменты и их применение. |
| 19 | + li Настройка окружения, редактора, инструменты для разработки и отладки. |
| 20 | + li Модули: организация, подключение, версионность. |
| 21 | + li Встроенные модули http, path, fs, child_process и другие. |
| 22 | + li Событийный цикл, потоки в деталях, важные подводные камни и примеры. |
22 | 23 | li |
23 | | - strong Более глубокое понимание языка. |
24 | | - p Чтобы писать хороший код, а также грамотно пользоваться современными фреймворками, мы изучим JavaScript лучше, включая тонкости и продвинутое применение языковых конструкций. |
| 24 | + strong Сервер на Node.JS |
| 25 | + p Создадим код и тесты для веб-сервера на Node.JS, кластеризуем его на всех ядрах процессора. |
25 | 26 | ul |
26 | | - li Замыкания и их грамотное применение. |
27 | | - li Внутреннее устройство движка JavaScript. |
28 | | - li Контекст this в деталях. |
29 | | - li Форвардинг, одалживание и делегирование функций. |
30 | | - li Прототипы, классы, прототипное и функциональное ООП, детали использования. |
| 27 | + li Создание сервера на Node.JS |
| 28 | + li Тестирование с использованием mocha, supertest и других фреймворков. |
| 29 | + li Promises, Iterators, Generators, их особенности в Node.JS |
| 30 | + li Фреймворк Koa.JS для создания серверов |
| 31 | + li Структура приложения и виды Middleware для Koa.JS |
| 32 | + li PM2 для запуска и поддержания процессов сервера. |
31 | 33 |
|
32 | | - p По окончанию первой части курса вы свободно пользуетесь языком JavaScript, с учётом его особенностей. Мы улучшим эти навыки в последующих частях курса. |
| 34 | + p По окончанию первой части курса вы понимаете, как разрабатывать на Node.JS, как делать сервер, устойчивый к пользовательским и, по возможности, к программным ошибкам, и можете запустить, пока ещё, весьма небольшой Node-проект. |
33 | 35 |
|
34 | 36 | +e.body._02 |
35 | 37 | +e('h2').title.phone-only Вторая часть курса |
36 | 38 | ol |
37 | 39 | li |
38 | | - strong Документ, генерация интерфейса. |
39 | | - p Здесь мы учимся работать с документом, решать всевозможные задачи в браузере. |
| 40 | + strong Работа с базой данных |
| 41 | + p Мы будем использовать MongoDB и Mongoose, однако те же принципы применимы к другим базам, на их место можно поставить MySQL, PostgreSQL, Redis и т.п. |
40 | 42 | ul |
41 | | - li Внутреннее устройство браузера, оптимальная организация страницы со скриптами. |
42 | | - li Дерево DOM, особенности разработки в современных браузерах с отмирающей, но иногда нужной поддержкой старых. |
43 | | - li Динамическая генерация интерфейса - методы DOM, их грамотное использование. |
| 43 | + li MongoDB и Mongoose, их особенности, примеры использования, схемы, валидация, плагины. |
| 44 | + li REST-сервис для управления объектами User |
| 45 | + |
44 | 46 | li |
45 | | - strong События, взаимодействие с посетителем. |
| 47 | + strong Веб-сервис, уровень 2 |
46 | 48 | ul |
47 | | - li Основы и тонкости работы с различными событиями для решения основных интерфейсных задач. |
48 | | - li Drag'n'Drop, по окну и внутри элемента |
49 | | - li Паттерн "делегирование", оптимизация производительности и архитектуры, чтобы интерфейсы не тормозили. |
50 | | - li Объектно-ориентированная разработка, компонентная архитектура с использованием ООП, событий и DOM. |
51 | | - |
52 | | - p По окончании второй части вы можете создавать интерфейсные компоненты, но нужно больше практики. |
| 49 | + li CLS и его грамотное использование для получения текущего запроса вне middleware |
| 50 | + li Логирование и обработка ошибок без потери контекста |
| 51 | + li Шаблонизация с Jade |
| 52 | + li Авторизация с Passport.JS |
| 53 | + li CSRF-защита от взлома для форм и AJAX-запросов |
| 54 | + li Socket.IO – интеграция и использование с Koa.JS и другими сервисами. |
53 | 55 |
|
54 | 56 | +e.body._03 |
55 | 57 | +e('h2').title.phone-only Третья часть курса |
56 | 58 | ol |
57 | 59 | li |
58 | | - strong Архитектура и сборка кода. |
| 60 | + strong Архитектура проекта |
| 61 | + p В среднем Node.JS-проекте – более сотни файлов. Это нормально, и даже вполне удобно, если их правильно организовать. |
59 | 62 | ul |
60 | | - li Организация скриптов, стилей и других компонентов проекта на диске, современные технологии Frontend-разработки и сборки. |
61 | | - li Node.JS как средство запуска полезных утилит. |
62 | | - li Шаблонизация, системы организации шаблонов и детали их работы. |
63 | | - li Архитектура сложных интерфейсов. |
| 63 | + li Архитектура HMVC для Koa.JS |
| 64 | + li Организация шаблонов, тестов, клиентских скриптов. |
| 65 | + li Gulp.JS для сборки. |
64 | 66 | li |
65 | | - strong Куда дальше? |
| 67 | + strong Выкладка Production |
66 | 68 | ul |
67 | | - li Обзор AJAX-технологий и фреймворков (Angular.JS, React.js), куда двигаться дальше. |
| 69 | + li Организация git-репозитария и модулей. |
| 70 | + li Deploy через свой Gulp-task или через PM2. |
68 | 71 |
|
69 | 72 | p На практике эти части не так чтобы резко отделены друг от друга, переход между ними плавный. Продвинутые темы используют элементы предыдущих. |
70 | 73 |
|
| 74 | + p В курсе очень много деталей, изложить их кратко не представляется возможным, если у вас есть какой-то вопрос по программе – напишите его внизу, в комментарии, я отвечу. |
| 75 | + |
71 | 76 | script. |
72 | 77 | var className = 'tabbed-pane', block = document.querySelector('.' + className); |
73 | 78 |
|
|
0 commit comments