arrow

назад

ask

Вопрос

Применял кто-то fsd? Считаете ли вы что это всего лишь архитектура папочек?

repost

117

input message

напишите коммент


31 коммент

· 18.10.2024

Как по мне fsd наоборот недостаточно продуман для интерактивных приложений. Он больше рассчитан на малые-средние проекты.

https://t.me/feature_sliced/1/115297 https://t.me/feature_sliced/1/105932

Да и по FSD рекомендуют не декомпозировать, пока в этом не будет нужды (а нужда может появиться через месяц/два/шесть, когда уже не будешь особо помнить что происходит в этом большом файле)

0

ответить

Так зачем откладывать на будущее, когда методология говорить делить здесь и сейчас?)

0

ответить

· 18.10.2024

https://t.me/feature_sliced/1/115327

Ответ от пользователя, который отмечен как эксперт по фсд. На самом деле многое понятно про фсд, если посмотреть основателей =)

0

ответить

Люди могут ошибаться. Здесь я следую документации. Класть в pages это тоже раздувание только на уровне pages. Скажем придет завтра бизнес и скажет хочу другой шаблон с сохранением логики, но старый удалять нельзя. Мы мутим еще один компонент, а логику изолируем в хук/композабл/класс и подключаем в новом компоненте. Копится разное ui представление. Не вижу проблемы в выносе фичей в слой фичей, даже если она одна. В будущем появляется вариативность на уровне сегментов. Вообще странно, что такая вольность допускается. Вот еще бы по бэм писали типа хотите используйте модификатор, а хотите нет, вот мы лично не используем без надобности. Если уж придумали методологию, то надо ее соблюдать, имхо )

0

ответить

· 18.10.2024

Я ничего не имею против фсд как вариант архитектуры. Всё чаще замечаю, что люди читают книжки/статьи и т.п. Но вместо того, чтобы осмысливать услышанное, они берут и используют как Библию. Ровно так же и фсд. Не может какая-то комплексная методология подходить всегда и всем в своей изначальной концепции. Точнее может, если описано подавляющее большинство кейсов, но такого я особо не встречал и всегда приходится так или иначе подстраивать методологию под конкретные нужды. (Что-то отсюда, что-то оттуда).

Тот же фсд не предлагает структурное верхнеуровневое деление на фичи (не юзкейсы фсд, а именно бл фичи). Но даже в среднем проекте без этого сложно обойтись. Иначе, если сверху деление по слоям, то сложно ориентироваться в проекте. имхо.

0

ответить

А что вы подразумеваете под бл фичами?

0

ответить

· 18.10.2024

Абстрактно можно взять из интернет магазина. Корзина/Профиль/Заказ/Товар/Рейтинг/Отзывы/Поиск и т.п.

0

ответить

· 18.10.2024

К примеру дефолтный фсд предлагает такую структуру

comment image

0

ответить

· 18.10.2024

Когда я её использовал, то немного изменил.

comment image

0

ответить

Фичи это про пользовательские действия, они же use cases. С технической стороны это манипуляции над entities и shared. Давайте попробуем на практике с вашим примером. Корзина это страница, которая содержит фичи изменение количества, удаление, применение промокода, т.е у вас будут слайсы cartChangeCountProduct, cartDeleteProduct, cartApplyPromocode. В принципе аналогично можно рассуждать про профиль и заказ. Товар должен дергать функцию добавления себя в корзину из фичи в слайсе cart. Отзывы, рейтинг и поиск это также пользовательские действия. С поиском тут немного по другому будет скорей всего, если рассматривать глобальный поиск и поиск в категории товаров. Ну как-то так )

0

ответить

· 18.10.2024

Я говорю про навигацию в проекте. Дефолтный фсд предлагает структуру, при которой разрабатывая одну бл фичу нужно бегать по всему проекту (папочкам) в поисках нужного entity/feature(fsd)/widget. Когда бл фич становится хотя бы 20, этот процесс становится адом.

0

ответить

Если вам так удобно хорошо ) Мне удобнее мыслить согласно документации

0

ответить

· 18.10.2024

Вы правда используете такую структуру?)

comment image

0

ответить

Структура у нас всегда слой - «имя сущности» - слайсы. Есть некоторые оговорки в плане философии entities, но все в рамках fsd. Полет нормальный )

0

ответить

· 18.10.2024

Извращенцы)))) Это если расписать дальше структуру магазина, то путь от CartWidget до CartItem (entity) будет больше пары сотен файлов/папок =)

Для меня привычнее и удобнее поменять слои и слайсы местами, чтобы виджеты/юзкейсы/сущности одной бл были рядом, а не на расстоянии тысяч файлов/папок =)

0

ответить

Скорей всего мы друг друга не понимаем ) Ну, во-первых cart это pages, если нет кейса быстрого просмотра корзины, во вторых entities-> product -> ui-> ProductInCart . Где тут куча директорий и файлов?)

0

ответить

· 18.10.2024

Я скрин прикреплял выше. Там уже путь от CartWidget до CartItem составляет около 30 файлов/папок.

Под путем Я имею ввиду развернуть все папки и посчитать все элементы (папки и файлы) между двумя файлами.

0

ответить

· 18.10.2024

Но не нужно воспринимать скрин как что-то конкретное и осмысленное. Он представляет абстракцию сгенеренную гпт по документации фсд =)

0

ответить

Ну если все развернуть - да, но здесь кому как удобно конечно

0

ответить

· 18.10.2024

А в чём вообще заключается удобство (идея) деление структуры по слоям, а не по бл?) Даже по фсд слайсы не могут использовать другие слайсы того же слоя... Т.е. от того, что слайсы находятся рядом в одном слое, никакого профита не даёт...

0

ответить

Лично мне удобно называть вещи своими именами + я подсадил на эти термины наших аналитиков и дизайнера. Это соответствует одному из столпов DDD - ubiquitous language (единый язык) Условно я говорю, что это виджет и люди понимают что это такое. Слайсы не могут и не должны использовать соседей - факт, потому что появится лишняя связь. Профит дается на слое pages, когда мы изолированные фичи/виджеты можем подружить с помощью public api. То есть pages это слой вызывающего кода

0

ответить

· 18.10.2024

Но опять таки, вы про профит фсд, а не про профит изначального деления по widget/feature/entity =)

Ладно, всё равно спасибо за ответ =)

0

ответить

По делению проще навигироваться ) субъективно, понимаю )

0

ответить

· 18.10.2024

https://habr.com/ru/articles/568216/

Небольшую статью по этому поводу нашёл

0

ответить

Почитаю, спасибо )

0

ответить

Пробовал эту архитектуру для фронтенда на React – получилось достаточно удобно, FSD хорошо подходит для однонаправленного потока данных.

Но некоторые аспекты концепции мы изменили под себя. Например, разрешили использовать одни компоненты внутри других, если они находятся на одном уровне

0

ответить

На одном уровне - в одном сегменте?

0

ответить

Да, на одном уровне, в одном сегменте сегменте. Например, когда есть условный компонент кнопки и переключатель, использующий несколько таких кнопок. И то, и другое – shared компоненты, не несущие бизнес-логики

0

ответить

В shared действительно без разницы. Мы так тоже делаем

0

ответить

Относительно правдиво, зависит от нагруженности (В плане объëма и иерархии) и сложности приложения. Где-то fsd необходим, а где-то избыточен. А так, любая архитектура во фронте это архитектура папочек.

0

ответить

Архитектура папочек звучит несколько унизительно, хоть и от части правдиво. Это следствие некоторых подходов ddd с имплементацией на папках. В любом случае это методология, которую можно использовать на проектах среднего уровня сложности (на сложных не пробовал). Для командной работы самое то.

0

ответить

еще контент автора

пост закреплён — пока закрепить можно только один пост

trash bin
перейти к нему не получится