Руслан Куянец | Reactify – Telegram
Руслан Куянец | Reactify
5.85K subscribers
704 photos
52 videos
39 files
287 links
Я IT-специалист, ментор и основатель проекта YeaHub и сообщества Reactify. Здесь рассказываю про Frontend и IT.

Менторство:
https://reactify.ru

YouTube канал:
https://youtube.com/@reactify-it

YeaHub:
https://yeahub.ru/

Связь:
@ruslan_kuyanets
Download Telegram
🖥 Нужен ли Docker новичку?

Docker — это мощный инструмент для быстрого развертывания приложений. С его помощью можно одной командой запускать множество сервисов: бэкенд, несколько фронтенд-приложений, базы данных, хранилища и многое другое. Также он позволяет легко настраивать Nginx и выпускать SSL-сертификаты.

В YeaHub мы используем Docker для всех наших приложений и сервисов, которые собираются и запускаются одной командой. Это невероятно удобно, особенно когда требуется настроить CI/CD.

За время работы я разработал свой собственный шаблон — универсальную стартовую сборку для Docker, которую постоянно совершенствую. Представьте, как за одну команду запускаются четыре фронтенд-приложения, один бэкенд, база данных, Nginx, SSL-сертификаты, миграции и PGAdmin на любом сервере. Сейчас, если я арендую новый сервер, мне требуется меньше 5 минут, чтобы развернуть всё это.

Docker — это действительно очень удобный инструмент. Однажды я сниму курс по нему, основанный на собственном опыте. Это будет не типичное видео с YouTube, где часто отсутствуют реальные практические советы. Все знания, которые я получил, — результат часов, проведённых в терминале сервера, настройках Docker и запуске проектов. Этот курс будет практическим, чтобы вы смогли легко и быстро запускать свои приложения. Видео будет частью курса по архитектуре фронтенда. На следующей неделе мы познакомимся с основами и рассмотрим, что из себя представляет фронтенд.

#frontend #docker
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍53
👑 Платформа YeaHub

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

На этой неделе мы исключили неактивных участников из команды и усилили интеграцию с менторством. Теперь после завершения обучения и выполнения заданий ученики проходят 1-3 месяца практики на YeaHub, параллельно готовясь к собеседованиям.

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

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


Что такое YeaHub?

Это IT-платформа, предоставляющая сервисы для карьерного роста, обучения, менторства и участия в мероприятиях. Платформа помогает специалистам развиваться, публиковать статьи, обмениваться опытом и участвовать в проектах. Все участники проходят верификацию, чтобы гарантировать высокое качество профессионалов. YeaHub — это место для поддержки и совместного роста в динамичном мире IT.

Мы стремимся улучшить IT-сообщество, объединить специалистов и предоставить им возможности для развития и карьерного роста.

На скрине мой профиль на платформе

#yeahub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥31
Паттерн Адаптер в React. Продвинутый Frontend на реальных примерах

В этом видео мы рассмотрим Паттерн Адаптер (Adapter) в контексте React и Frontend разработки.

Для проекта Маркет используем Vite, FSD, TypeScript.

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

Видео уже на канале! Четвертая серия видеокурса
Я не оставляю ссылку, так как видео лучше продвигается, если заходить на него напрямую с YouTube. Это помогает улучшить его рейтинг и увеличить шансы на органическое продвижение.

#frontend #patterns #adapter
👍123🔥3
📌 Разбор Резюме

Друзья, привет!

Как вам идея провести стрим, где я разберу ваши резюме? В прямом эфире сможем вместе разобрать ошибки, обсудить способы улучшения и подкорректировать ваши CV! Плюс, будет возможность пообщаться, посмотреть резюме друг друга и поделиться полезными советами.

Если будет много желающих, обязательно проведем такой эфир! Кому интересно — пишите, не стесняйтесь

Точно будет полезно и продуктивно!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34👍4💯2🫡1
🏆 Получение оффера

Представьте, как меняется жизнь: с зарплаты в 20 тысяч ты вырастаешь до 230 тысяч. Это не просто скачок — это кардинальная трансформация возможностей и перспектив. И самое главное, человек не просто достиг своей цели, а теперь работает там, где ему действительно нравится. Один из моих учеников совсем недавно получил оффер в крупную IT-компанию, а еще ждёт результаты финалов от двух других и готовится к последнему этапу в четвёртую.

Удалёнка, 230 тысяч на руки, бонусы, ДМС, лучшая техника — звучит как мечта, но для него это уже реальность. Я искренне горжусь своими учениками, и рад видеть их успехи.

Вот теперь думаем, соглашаться, или ждать результаты других финалов. По просьбе ученика замазал компании и имена
👍20🔥95
🚀 Архитектура Frontend с Нуля до Продакшена

Завтра выходит первое видео из курса «Архитектура Frontend с Нуля до Продакшена». За 40 минут я расскажу о ключевых технологиях и инструментах, которые используются во Frontend, начиная с базовых настроек и заканчивая деплоем на сервер. В дальнейшем на YouTube выйдут миникурсы по таким темам, как Docker, Webpack, CI/CD, тестирование, мониторинг, локализация и многое другое.

Все примеры будем разбирать на реальном проекте, а не на Кошечках и Собачках. Вместе начнем создавать полноценное приложение, чтобы на практике изучить весь процесс.
🔥395👍5
👩‍💻 Архитектура Frontend с Нуля до Продакшена. Docker, Webpack, CI/CD, React, Deploy

В этом видео мы подробно рассмотрим архитектуру Frontend-приложений, начиная с технологий и инструментов, заканчивая настройками и деплоем. Это будет комплексный обзор всех ключевых компонентов архитектуры: React, Redux, Storybook, Webpack, Docker, Nginx, CI/CD и других технологий.

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

📌 Схема

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

#frontend #react #docker #cicd #deploy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥133
🆕 Что РЕАЛЬНО надо знать Frontend Разработчику для трудоустройства

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

Меня поражает, когда из 800 откликов на вакансию, более 600 — это резюме с минимальными навыками вроде HTML, CSS и базового JavaScript. Это не серьезный подход. Лучше потратить еще немного времени на изучение необходимых технологий и откликаться, когда вы действительно готовы. Идеально, если перед этим вы поработаете пару месяцев с полным стеком: React, Redux Toolkit, RTK Query, TypeScript. Напишите многостраничное приложение, выполняющее запросы к API.

Если вы уже умеете разрабатывать простые приложения — это сигнал, что можно начинать искать работу. Для более высоких позиций и зарплат важно научиться настраивать проекты, понимать процессы в компаниях, разбираться в архитектуре фронтенд-приложений и освоить различные инструменты и оптимизации. Важно пройти множество практических кейсов: работа с API, пагинация, фильтрация данных, создание модальных окон, слайдеров, виртуальных списков и т.д.

Полезно также читать статьи, обсуждать технологии с коллегами и смотреть конференции. Это развивает вашу насмотренность, расширяет кругозор и помогает показать интерес к профессии на собеседованиях. Часто вижу, как кандидаты с минимальным опытом производят отличное впечатление благодаря глубоким знаниям и заинтересованности.

На освоение всего пути с нуля уходит от 5 до 8 месяцев, в зависимости от вашего свободного времени и скорости обучения. Вот примерный план:

1️⃣ месяц на верстку,
2️⃣ месяца на изучение JavaScript,
1️⃣ месяц на React,
Затем 2 месяца практики: работа с React, Redux, TypeScript и JavaScript. Пишем приложения, углубляемся в теорию, закрываем пробелы в знаниях и активно готовимся к собеседованиям.

Это рассчитано на среднего человека с нормальными навыками обучения и возможностью уделять 2-3 часа в день плюс немного больше в выходные. Без фанатизма, но с регулярностью. За 5-6 месяцев можно научиться разрабатывать полноценные приложения с полным стеком. Далее идет подготовка к собеседованиям (примерно 1 месяц) и 1-2 месяца поиска работы параллельно с продолжением практики.

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


📌 Итак, ключевые моменты:

✔️ Ты знаешь технологии, которые требуются для вакансии: React, TypeScript, Redux Toolkit, RTK Query.
✔️ Ты можешь самостоятельно разработать проект по ТЗ, используя эти технологии (с гуглением, но без копирования чужого кода).
✔️ Ты интересуешься продвинутыми темами: браузер под капотом, архитектура приложений, сборщики, тестирование и т.д.
✔️ Ты уверенно решаешь базовые задачи по лайвкодингу и знаешь теорию.
✔️ Ты грамотно составил резюме и подготовил самопрезентацию.

#frontend #work #interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍165🔥5
⁉️ Как думаете нормальный сценарий?

Я гуманитарий, у меня всегда были проблемы с математикой, но я смог изучить полный стек за 7 месяцев и найти работу. Всё делал сам, просто было огромное желание поменять жизнь. Каждый день уделял обучению по 3-4 часа, а на выходных даже больше.

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

С ментором я бы справился быстрее, где-то за 4-5 месяцев. И знания, думаю, были бы лучше. Есть ребята, которые вообще очень быстро всё схватывают. Я, к сожалению, не из таких 🥲
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍3😢2
Сколько времени вам понадобилось, чтобы освоить HTML, CSS, JS, TS, React и Redux, а также начать делать пет-проекты без копирования из видео, используя только документацию и Google?
Anonymous Poll
16%
4-5 месяцев
9%
5-6 месяцев
9%
6-7 месяцев
8%
7-8 месяцев
8%
8-9 месяцев
50%
9+ месяцев
👍10🤔3🔥1💯1
🗓 Длительность обучения

Долгое обучение имеет свои преимущества. Как правило, те, кто учился долго и с перерывами, успели встретить больше кейсов и изучить больше тем. Но есть нюанс — не все темы нужны на начальном этапе. Часто студенты тратят время на вещи, которые можно изучить позже, например, классы, каррирование, прототипы, ООП, анимации и тд. Это все хорошо, но лучше сфокусироваться сначала на необходимых навыках, а затем расширять кругозор.

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

✔️ Сначала лучше научиться писать код и создавать небольшие проекты, чтобы видеть результаты своей работы. Затем, по мере погружения, можно расширять свои знания. Такой подход делает обучение более интересным, так как вы будете понимать, зачем изучаете те или иные темы. После работы с DOM и fetch запросами вам станет любопытно узнать, что стоит "под капотом" у сетевых технологий и браузера, и тогда их изучение пройдет легче.

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


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

Важно определить цель обучения: учитесь ради процесса или для поиска работы. Ключевой навык — это адаптация и умение находить нужную информацию. Никто не знает весь JavaScript, и я не исключение. Но если появится задача реализовать видеочат, я смогу найти решение с помощью WebRTC. Не нужно изучать всё заранее, так как многие знания могут оказаться ненужными.

🌧 Был проведен эксперимент: взяли идеальное резюме олимпиадника с опытом стажировок в Яндексе и начали откликаться на вакансии. В итоге лишь 5% приглашений. Это показывает, что даже самый гениальный технический специалист не нужен, если у него нет практических навыков и опыта. Работодателям нужны не заучки, а специалисты, способные выполнять задачи

#frontend #work
Please open Telegram to view this post
VIEW IN TELEGRAM
👍162🔥2
👍 Дорогие коллеги, желаю всем отличных выходных! Предлагаю провести время с пользой и посмотреть видео по архитектуре фронтенд-приложений. Это поможет вам прокачать свои навыки и понять, в каком направлении двигаться дальше. В ходе просмотра мы с учениками разбираем проекты и готовимся к собеседованиям. Часто интервьюеры спрашивают о проектах, над которыми вы работали, о процессе деплоя, настройке сборки, а также о CI/CD. Эти знания необходимы для мидлов, и именно поэтому я выступал с этой темой на митапе и позже записал видео на YouTube.

Также в планах снять видео о процессах в компаниях. Это даст понимание, как создаются приложения и как происходит взаимодействие в команде. Я уже проводил митап на эту тему, и он получил положительный отклик. Планирую выпустить видео в YouTube.

Кроме того, я разрабатываю уникальный курс по React, который вы не найдете нигде. Мы охватим всю экосистему и продвинутые темы, научимся с нуля создавать приложения, настраивать их, тестировать, дебажить и деплоить. Все аспекты архитектуры фронтенда будут включены в курс.

Проект будет разрабатываться по GitFlow, основываясь на реальном макете и дизайн-системе, а также с использованием разработанного бэкенда с более чем 80 эндпоинтами. Это будет аналогично продвинутому курсу Ульби, но с менторской поддержкой и ежедневной обратной связью. Большая часть этого курса будет в открытом доступе в YouTube

YouTube канал:
https://youtube.com/@reactify-it
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍54
👩‍💻 React Fiber

Ранее React использовал механизм Stack Reconciler для обновления интерфейсов, что приводило к проблемам с производительностью. Одним из главных недостатков было невозможность приостановить и возобновить рендеринг, что могло вызывать "замораживание" интерфейса при выполнении тяжёлых операций. Чтобы устранить этот недостаток, начиная с React 16, была создана новая архитектура — React Fiber.

Что такое React Fiber?

React Fiber — это переработанная структура внутреннего устройства React, которая управляет процессом рендеринга и согласования (reconciliation). Основное нововведение заключается в том, что теперь React разбивает весь процесс обновления на мелкие задачи, которые можно:

1. Приостанавливать.
2. Прерывать для выполнения более важных операций.
3. Возобновлять с того же места.
4. Отменять обновления, если компонент больше не нужен.

Эта архитектура помогает React быть более отзывчивым и гибким в работе с сложными интерфейсами.

📈 В чём ключевая идея Fiber?

Вместо использования традиционного стека для отслеживания состояния компонентов, Fiber создаёт связанную структуру данных для каждого элемента виртуального DOM. Это позволяет React двигаться вперед и назад по компонентному дереву, задавать приоритет задач и управлять состояниями на уровне узлов.

Каждый узел Fiber содержит:
- Тип компонента (функциональный, классовый или элемент DOM).
- Ссылки на дочерние, родительские и соседние узлы.
- Текущее состояние и приоритет выполнения.

Такой подход позволяет React выполнять задачи в соответствии с их приоритетом:
- Высокий приоритет: действия пользователя (клики, ввод текста).
- Низкий приоритет: обновление анимации или загрузка данных.

🖥 Как это работает на практике?

React Fiber использует две основные фазы рендеринга:

📌 Фаза рендеринга (Render Phase):
React создаёт новое дерево Fiber, вычисляя, какие изменения должны быть сделаны.
Эта фаза может прерываться и возобновляться.

📌 Фаза выполнения (Commit Phase):
Все изменения применяются к реальному DOM.
Происходит быстро и синхронно, чтобы интерфейс обновлялся без задержек.

🛡 Особенности React Fiber:

- Time Slicing: React разбивает выполнение задач на короткие промежутки времени, чтобы не блокировать интерфейс.
- Асинхронный рендеринг: позволяет приостанавливать и возобновлять рендеринг компонентов.
- Гибкое управление задачами: React определяет, какие задачи выполнять первыми, а какие можно отложить, чтобы обеспечить плавное взаимодействие с пользователем.


#frontend #react
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥72💯2🤝1
Паттерн Наблюдатель в React. Продвинутый Frontend на реальных примерах

В этом видео мы рассмотрим Паттерн Наблюдатель (Observer) в контексте React и Frontend разработки.

Для проекта Маркет используем Vite, FSD, TypeScript.

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

Видео уже на канале! Пятая серия видеокурса
Я не оставляю ссылку, так как видео лучше продвигается, если заходить на него напрямую с YouTube. Это помогает улучшить его рейтинг и увеличить шансы на органическое продвижение.

#frontend #patterns #observer
🔥13👍32😁1🤝1
👩‍💻 Рендеринг в React

В React рендеринг — это процесс, при котором компонент заново отрисовывается на основе новых данных. Этот процесс происходит по нескольким причинам:

📌 1. Изменение состояния (state)
Если состояние компонента меняется, React автоматически запускает его ререндеринг. Например:


const CounterButton = () => {
const [count, setCount] = useState(0);

return (
<button onClick={() => setCount(count + 1)}>
Click me {count} times
</button>
);
};

Когда мы вызываем setCount, значение count меняется, что приводит к ререндерингу компонента, чтобы отобразить обновлённое число.

📌 2. Изменение пропсов (props)
Пропсы сами по себе не являются первичной причиной ререндеринга, а скорее следствием изменения состояния в родительском компоненте. Если состояние родителя обновляется, он перерисовывается и передает изменённые пропсы дочернему компоненту. Это приводит к ререндерингу дочернего компонента:


// Родительский компонент
const Parent = () => {
const [text, setText] = useState('Hello');

return (
<>
<Child message={text} />
<button onClick={() => setText('Hello, World!')}>Change Text</button>
</>
);
};

// Дочерний компонент
const Child = ({ message }) => <div>{message}</div>;

Когда setText меняет состояние text, компонент Parent перерисовывается, и передаёт новое значение пропса message в Child, что вызывает ререндеринг дочернего компонента.

Примечание: При использовании React.memo изменения пропсов действительно считаются причиной ререндеринга, если новый пропс отличается от предыдущего.

📌 3. Изменение контекста (Context)
Если компонент использует контекст (useContext или <Context.Consumer>), и его значение меняется, то все компоненты, подписанные на этот контекст, будут перерисованы:


const ThemeContext = React.createContext('light');

const Parent = () => {
const [theme, setTheme] = useState('light');

return (
<ThemeContext.Provider value={theme}>
<Child />
<button onClick={() => setTheme('dark')}>Toggle Theme</button>
</ThemeContext.Provider>
);
};

const Child = () => {
const theme = useContext(ThemeContext);
return <div>Current theme: {theme}</div>;
};

Когда значение контекста theme изменяется (например, с 'light' на 'dark'), компонент Child ререндерится, чтобы отобразить новое значение темы.

📌 4. Ререндеринг родительского компонента
Даже если состояние компонента и его пропсы остаются неизменными, он будет перерисован, если родительский компонент ререндерится (даже без видимых изменений). Это связано с тем, что дочерние компоненты автоматически ререндерятся вместе с родительским компонентом. Например:


const Parent = () => {
const [count, setCount] = useState(0);

return (
<>
<button onClick={() => setCount(count + 1)}>Increment</button>
<Child />
</>
);
};

const Child = () => <div>I'm a child</div>;

Здесь Child не зависит от состояния count, но каждый раз, когда Parent ререндерится, Child ререндерится тоже. Это можно предотвратить с помощью React.memo.

Как избежать лишних ререндеров?

✔️ React.memo: предотвращает ререндеринг компонента, если его пропсы не изменились.
✔️ Хук useCallback и useMemo: сохраняют функции и значения, чтобы они не создавались заново при каждом ререндеринге.
✔️ Оптимизация контекста: разбивайте контекст на отдельные провайдеры, чтобы уменьшить количество компонентов, реагирующих на изменение его значения.

#react #frontend #memo #render
Please open Telegram to view this post
VIEW IN TELEGRAM
👍179🔥2😁1
Я постоянно говорю о пользе сообщества: оно мотивирует, даёт ответы на вопросы и поддержку. У моего коллеги есть интересный формат — они создают продукты за 1-2 месяца и выводят их на рынок. Участники прокачивают свои навыки и работают над реальными проектами с нуля до релиза.

Для кого это:
- Для тех, кто готов вложиться в проект, но не может найти работу.
- Для тех, кто не хочет "накручивать" опыт, а реально хочет поработать в команде и получить ценный опыт.

Что они предлагают:
- Избежать ошибок новичков — научат запускать проекты с минимальными ресурсами.
- Возможность запустить пет-проект, который станет отличной строкой в резюме.
- Работа в сильной команде: полный цикл разработки от идеи до релиза.
- Обмен опытом с профессионалами в разработке, аналитике, инфраструктуре и маркетинге.
- Шанс создать свой успешный стартап.
- В этом сезоне принимаются новички без коммерческого опыта, но с опытом работы над собственными проектами и желанием развиваться в стартапах.
- При высокой вовлечённости и прогрессе возможно получение финансовой поддержки уже после второго спринта (2 недели).

Как это работает:
1. Помогут проверить идею и построить дорожную карту.
2. Соберут команду из 2-5 человек, предоставят всю инфраструктуру и инструменты.
3. Организуют консультации с опытными специалистами.
4. Через 1-2 месяца команда выпускает продукт.

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

Sprint Labs — это сообщество для тех, кто готов не просто мечтать, а действовать и создавать.
https://forms.gle/W9HCQhAkXXMjjFs36
👍8🔥32
🔝 Митап по Feature-Sliced Design (FSD)

Сегодня я буду проводить митап для учеников, посвященный Feature-Sliced Design (FSD). На онлайн-сессии разберем структуру страницы приложения, детализируя её на слои, срезы и сегменты. Покажу, как декомпозировать проект на бизнес-сущности и правильно организовать файловую структуру. Мы не только разложим все по полочкам, но и рассмотрим принципы, правила и реальные лайфхаки для обхода возможных сложностей при использовании FSD.

Многие новички сталкиваются с трудностями, когда начинают изучать FSD, потому что подход кажется излишне формальным. Но на деле — это мощный инструмент, который помогает мыслить категориями бизнес-сущностей, учит декомпозиции и грамотному управлению зависимостями. FSD формирует четкое представление о модульности и структурирует понимание архитектуры приложения. Разбирая FSD, разработчики также постигают ключевые принципы проектирования и шаблоны, которые полезны для любых типов проектов.

📌 Принципы и паттерны, которые помогают понять FSD:

✔️ Принцип единственной ответственности (Single Responsibility Principle): каждый срез отвечает только за одну конкретную задачу или сущность.
✔️ Разделение областей видимости (Separation of Concerns): логика и представление четко изолированы по слоям.
✔️ Принцип инверсии зависимостей (Dependency Inversion Principle): верхние уровни приложения зависят только от интерфейсов или контрактов нижних слоев.
✔️ Open/Closed Principle: компоненты и срезы легко расширяются, но сложно модифицируются, что улучшает устойчивость к изменениям.
✔️ Композиция вместо наследования (Composition over Inheritance): через FSD можно легко композировать логику и компоненты без сложных иерархий.
✔️ Чистая архитектура (Clean Architecture): соблюдается иерархия и направленные зависимости.
✔️ Декомпозиция и агрегация: декомпозируя сущности, мы создаем более мелкие и независимые модули, которые затем агрегируются в более сложные структуры.

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


#frontend #fsd #react
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥84
🖥 Управление состоянием с помощью паттерна Observer

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

Рассмотрим, как создать и использовать простую реализацию этого паттерна для управления состоянием.

✏️ Создание Observable
В отдельном файле создадим функцию, которая будет хранить состояние и управлять подписчиками. Назовем её createObservable:


// observable.js
export const createObservable = (initialState = []) => {
let state = initialState;
let observers = [];

// Метод для уведомления всех подписчиков об изменениях
const notify = () => {
observers.forEach((observer) => observer(state));
};

return {
// Метод для подписки на изменения
subscribe: (observer) => {
observers = [...observers, observer];
},
// Метод для отмены подписки
unsubscribe: (observer) => {
observers = observers.filter((obs) => obs !== observer);
},
// Метод для изменения состояния и уведомления подписчиков
setState: (newState) => {
state = newState;
notify();
},
// Метод для получения текущего состояния
getState: () => state,
};
};


💭 Создание хранилища (Store)
Теперь вместо использования обычного массива, создадим состояние для списка фильмов, используя наш createObservable. Это позволит нам централизованно управлять состоянием и уведомлять подписчиков об изменениях.


// store.js
import { createObservable } from './observable';

const moviesObservable = createObservable([]);


⌛️ Добавление данных в хранилище
Теперь предположим, что вы загружаете данные о фильмах с API:


const fetchMovies = async (query) => {
const response = await fetch(`https://api.example.com/movies?search=${query}`);
const movies = await response.json();
return movies;
};

// Получаем фильмы и обновляем состояние хранилища
const moviesFromApi = await fetchMovies('Inception');

moviesObservable.setState(moviesFromApi); // Теперь в хранилище у нас массив фильмов


✉️ Подписка на изменения
Когда состояние изменится, нам нужно автоматически отобразить новые данные. Например, создадим функцию displayMovies, которая будет выводить фильмы на экран, и подпишем её на наш moviesObservable:


const displayMovies = (movies) => {
console.log('Фильмы обновились:', movies);
};

// Подписываемся на изменения в состоянии хранилища
moviesObservable.subscribe(displayMovies);


Теперь каждый раз, когда состояние хранилища изменяется через setState, функция displayMovies будет автоматически вызываться с обновлёнными данными.

🔔 Получение текущего состояния
Для доступа к текущим данным из хранилища можно использовать метод getState:


const currentMovies = moviesObservable.getState();
console.log('Текущие фильмы:', currentMovies);


Преимущества использования паттерна Observer:
- Централизованное управление состоянием — вся логика управления данными сосредоточена в одном месте.
- Гибкость — вы можете легко добавлять новые подписки или отменять их при необходимости.
- Простота тестирования — можно отдельно тестировать логику хранилища и взаимодействие с подписчиками.
- Отделение состояния от представления — подписчики отвечают только за реакцию на изменения, а само хранилище не зависит от реализации компонентов интерфейса.

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


Использование паттерна Observer — это хорошая база для перехода к более сложным инструментам управления состоянием, таким как Redux или MobX.

#javanoscript #store #observer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123🔥3
Привет всем! За последние 6 месяцев в сообществе ОМ я многое переосмыслил и понял одну важную вещь

На рынке каждый борется за свои интересы, и компании — не исключение. У них есть ресурсы и свои уловки, и они используют их в полную силу. Почему ты должен ограничивать себя? Если они оптимизируют процессы, манипулируют данными и фильтруют резюме, то и ты имеешь полное право использовать все доступные инструменты: адаптируй резюме, готовься к собеседованиям, и если надо — накручивай опыт, чтобы пройти фильтры.

📌 Конкуренция — это норма: Если ты не борешься за своё место, тебя обходят другие. Компании делают всё, чтобы держать тебя в неведении, манипулируя предложениями и скрывая реальную причину отказа. Это рынок: либо ты играешь в полную силу, либо остаёшься без работы.

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

🔗 ВСЕ УЛОВКИ КОМПАНИЙ

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

Но важно понимать: ОМ не учит халяве и безделью. Здесь не про то, чтобы накрутить опыт, влезть на мидла и сидеть без дела. В сообществе призывают к трудолюбию — чтобы подготовиться, нужно реально много работать над собой.

ОМ учит ценить себя и своё время. Никакой работы ради «опыта» и печенек. Ты работаешь — ты получаешь достойную оплату. В комьюнити есть гайды, чаты, ресурсы — всё, чтобы ты мог расти и добиваться своих целей.

В это воскресенье (6 октября) подписки для новых участников закроются на неопределённое время. Если хочешь попасть — не пропусти.

🔗 ТУТ ОПИСАНЫ ВСЕ БОНУСЫ
🔗 ФИЛОСОФИЯ СООБЩЕСТВА

ИТ — это не только про технологии и кодирование. Это умение общаться, адаптироваться и взаимодействовать. Эти навыки важны в каждой сфере, поэтому развивайтесь всесторонне!


В комментариях я добавлю ссылку на пробную подписку на 3 дня. За это время вы сможете изучить материалы по созданию резюме, подготовке к собеседованиям, развитию софт-скиллов и многому другому. Если вам понравится, будет возможность оформить полноценную подписку.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍31😁1😢1