Главная | Все статьи | Дневник студента

✓ Проект «Лента новостей» (frontend): пройдено

Время чтения статьи ~2 минуты
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
✓ Проект «Лента новостей» (frontend): пройдено главное изображение

Завершила третий проект. Начала я его 19 июля, 1 августа отправила на первую проверку, и 22 августа спустя 6 проверок ментор принял проект.

Было даже сложнее, чем с предыдущим. Но не менее увлекательно и полезно. Улучшила свои навыки работы с вебпаком, бутстрапом, попрактиковала watchjs и немного освоила автоматы (для этого даже начала читать сответствующую книгу). Кроме того, разобралась как работают кастомные события на нативном JS, иначе неловко было пользоваться jquery, не зная, как оно внутри устроено.

Основной сложностью здесь была архитектура и автоматы. Я начала писать проект на классах, потому что в бойлерплейте лежали они. Сначала у меня был один большой класс, потом я попыталась выделить несколько отдельных классов. Но классы не получались, получился набор рандомных методов. Пришлось переписывать на функции.

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

Я вроде бы помнила, что такое MVC, и какой слой за что должен отвечать. Однако всё равно продолжала путаться, пока не выделила для себя следующие правила: 1) вотчеры должны только перестраивать DOM и не изменять стейт, 2) листенеры должны только изменять стейт и не перестраивать DOM.

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

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

Или когда ты въезжаешь в концепцию MVC, и начинаешь переписывать встроенные функции бутстрапа так, чтобы DOM перестраивался через вотчеры, а на стандартные события навешиваешь изменение состояния, но потом оказывается, что так делать не нужно, и нужно пользоваться готовыми абстракциями библиотеки.

Если на втором проекте приходилось больше голову ломать над тем, чтобы хоть как-нибудь добиться нужного результата, после чего комментарии ментора давали однозначное понимание, куда двигаться дальше. Здесь же добиться требуемого результата не так уж сложно, но очень сложно сделать это правильно. Для этого приходилось часто задавать вопросы Кириллу, иначе сложно было двигаться вперёд. А над полученными ответами нужно было подолгу размышлять, чтобы уловить суть.

Кириллу — великая благодарность.

Теперь сегодня я попробую выспаться (утопия), а с завтрашнего дня — приступаю к четвёртому долгожданному проекту.

Аватар пользователя Irina Nikolaidi
Irina Nikolaidi 23 августа 2019
16
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 28 ноября
профессия
от 14 960 ₸ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 28 ноября
профессия
от 24 542 ₸ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 28 ноября
профессия
от 28 908 ₸ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
от 39 525 ₸ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
Старт 28 ноября