Друзья, всем привет! На прошлой неделе выступил на конференции HolyJS, рассказывал опять про FSD. В прошлый раз я получил много комментариев, что FSD плох, но за эти пол года методология претерпела изменения, а за день до выступления вышла минорная версия 2.1. Идея доклада была рассказать о новых вещах в FSD через проблемы, но к сожалению все опять подумали, что в FSD ничего не меняется, одни проблемы 😁 Я считаю что у каждого инструмента есть недостатки, и рассказывать о том, как работать с инструментом через решение проблем намного интереснее.
О чем рассказывал?
1️⃣ Разбирал запрет кросс-импортов и как с ними работать через инверсию зависимостей и фичу @x, которая так и называется, публичное API для кросс-импортов (появилась в 2.1).
2️⃣ Про размазывание кода, когда мы сразу пытаемся все раскидать по всем слоям. Тут решение достаточно тривиальное - использовать local-first стратегию и не заниматься преждевременной декомпозицией. Даже если явно можно выделить сущность или фичу, не стоит ее сразу выносить в глобальный неймспейс, если она используется в одном месте. Вполне нормально, если фичи будут жить прямо в слайсе связанной сущности.
3️⃣ Про субъективное понимание слоев и почему все используют FSD по своему. Рассказал про page-slice подход (он появился в 2.1 и называется page-first), который меняет ментальное восприятие, как мы используем FSD. В этом подходе мы начинаем разработку от страниц и виджетов (а слои сущностей и фичей вообще первое время не используем). В связи с этим у методологии сейчас появилось два разных подхода, которые можно использовать (проектирование от сущностей VS от страниц). Какой способ выбрать, может зависеть от типа клиента (тонкий или толстый) и понимания полноты домена предметной области.
4️⃣ Про инфраструктурные сущности (мы у себя ввели кастомный слой shared/services) и как можно расширять методологию (новыми слоями и вертикально через домены).
А так же рассказал про главную на мой взгляд проблему в методологии, из-за которой многие начинают использовать FSD неправильно - документация и отсутствие хороших примеров. Но не все так плохо, как может показаться. Документация хоть и медленными шагами, но переписывается и пополняется новыми туториалами. А еще кортима активно работает над архитектурным линтером steiger (недавно был релиз версии 0.5.0), который помогает избежать целого ряда проблем на старте (той же преждевременной декомпозиции).
Запись я думаю выложат уже в новом году, обязательно скину ее в канал, а пока можете 👉 посмотреть слайды и 👉 поизучать дополнительный материал.
Post #139
3.17K
- 👍 49
- ❤ 14
- 🥱 5
- 👌 2
- 👎 1