План обучения такой:
Нужно осознать базовые структуры данных (просто понимать что это и как можно перенести идеи на свой код):
- Массив;
- Стэк;
- Список;
- Хэш-таблица;
- Дерево и Куча;
- Граф;
Что нужно знать про JavaScript:
- Примитивные и ссылочные типы данных;
- Hosting;
- Scope;
- Closure;
- Отличия: var, let, const;
- Контекст, apply, call, bind;
- Понимать модель наследования в JavaScript;
- Чем отличается
__proto__
отprototype
; - Promise, XHR (нужно знать, потому что умеет все);
- Понимать EventLoop, Microtasks vs Macrotasks;
После этих мучений нужно разобраться с Node.js :)
Нода есть в любом проекте на JavaScript, у тебя может не быть на проекте React но по любому будет нода.
Базовые вещи в Node.js:
- Что такое process;
- Что такое переменная окружения;
- Что такое CommonJS модули или как работает require;
- Что такое npm)
- Как написать простой сервер;
- HTTP Methods: get, post, put, delete;
Далее DOM:
- Как выбрать из DOM ноду;
- Чем отличается Element от Node;
- Что делает addEventListener;
- Что такое EventDelegation;
- Жизненный цикл события (Capturing, Target, Bubbling);
- Отличие stopPropagation от stopImmidiatePropogation;
- Что такое preventDefault;
React:
- Что такое виртуальный DOM или json модель DOM;
- Что такое Reconcile;
- Почему все так любят однонаправленный поток данных;
- Почему компоненты на одном уровне не должны использовать друг друга;
- Паттерны React: HOC как модификатор в БЭМ; RenderProp как элементы в блоке; Компонент как блок;
Инструменты:
- Git (понимать что внутри на поверхностном уровне, blob, index, commit, merge, rebase, cherry-pick)
- DevTools Node;
- DevTools Elements, Performance, Network;
- DevTools React;
В качестве обучающего задания можно верстку Gmail подключить к API или сделать приложение присылающее в телеграм напоминания.
Обучающие Online курсы и статьи:
- Типо норм, но я хз: https://www.coursera.org/
- Мой любимый ресурc по фронту: https://egghead.io/
- Конечно же: https://learn.javascript.ru/
- Курс по React: https://www.youtube.com/watch?v=ol4OVMJZC1w&list=PLDyvV36pndZEz2unvD0a2Spv7RehBrpDO
- EventLoop: https://www.youtube.com/watch?v=8aGhZQkoFbQ
- Google Developers: https://developers.google.com/web/fundamentals/
- Просто офигенная статья про то, как работает HTTP: https://yandex.ru/blog/company/77455
- Исчерпывающая вводная по Git: https://www.youtube.com/watch?v=yDSs80lu3ak
По интересам:
- Блог Дена Абрамова(Очень много интересного, а также почему не взяли в VK): https://overreacted.io/
- Метрики загрузки страницы: https://medium.com/web-standards/performance-metrics-ff23c213164e
- Схемки про то как работает VirtualDOM: https://medium.com/@rajaraodv/the-inner-workings-of-virtual-dom-666ee7ad47cf
- Как работает REDUX https://link.medium.com/SsKwRzYkGX
Полезные ссылочки:
- Как поднять простой сервер на Node.js: https://medium.com/devschacht/node-hero-chapter-4-c2ebcd12565c
- Хороший дизаин компонентов: https://inclusive-components.design/
- Библиотека компонентов на React от Alphabank, отличная библиотека: https://design.alfabank.ru/principles