Closed Yar56 closed 8 months ago
Name | Link |
---|---|
Latest commit | e3b04cc6492cfd97c179dc63f3d1c8b1686874e1 |
Latest deploy log | https://app.netlify.com/sites/pr-fsd/deploys/64ccc65bfef3810008ad9d06 |
@azinit fyi
@feature-sliced/core
import { Coin } from '~/shared/api/coingecko/models';
import { getCoinPageUrl } from '~/shared/lib/navigate/getCoinPageUrl'; (тут кстати отдельный разговор, Я бы вынес его в отдельную связанную сущность, эта часть явна привязана только к энтити coin и нигде больше не используется)
для понимания можно ещё раз почитать доку: https://feature-sliced.design/docs/reference/public-api#requirements-for-the-public-api, либо перейти в обсуждение https://github.com/feature-sliced/documentation/discussions/41#discussioncomment-455800смущает немного этот участок кода:
const fetchData = useCallback(async () => { return await Promise.all([ coinModel.coinSubModel.getCoinByIdFx({ coinId }), coinModel.coinSubModel.getCoinMarketChartByIdFx({ coinId }) ]); }, []); useEffect(() => { fetchData(); }, []);
не пользователь effector'а но насколько знаю один из его плюсов в возможности не завязываться на жизненный цикл компонента react'а, best practice для получения данных вроде в том, чтобы подписаться на маунт страницы
это замечание тоже опиональное
писал выше об этом компоненте: src\shared\lib\navigate\getCoinPageUrl.ts
Я бы подумал действительно ли это shared, так как явно привязано к энтити coin и используется только в нём
к тому же почему-то присутствует импорт из pages
в shared
import { RouteName } from '~/pages/models';
src\shared\lib\storage\localStorage.ts
над этим файлом тоже бы подумал, по названию выглядит, как просто удобный интерфейс для работы с LS
по факту же тут явная работа с сущностью User
поэтому перенёс бы эту часть в сущность User
src\widgets\header\Header.tsx
import { RouteName } from '~/pages/models';
также импорт с верхнего слоя pages
подумай о переносе RouteName
в shared/config/routes
, чтобы не нарушать правила
и нужно разобраться почему линтер тебе не подсвечивает эти места, глазами самому найти такие нарушения по всему проекту достаточно проблематично
src\widgets\layouts\SuspenseLayout.tsx
почему не просто в shared/ui
?
виджет обычно для композиции нижележащих слоёв
тут же только обёртка над лоадером
так что подумай о том, почему бы не спустить его в shared
@Yar56 что думаешь насчет фидбека? Я не смотрел проект сам, поэтому за апдейтами по проекту не следил, хочу понять, в каком состоянии этот ПР
@illright @PUndef привет. большинство пунктов обработаны, особенно те которые касаются fsd
Name | Link |
---|---|
Latest commit | 40cdd89bb18de690e143ef47a3398a95df673efe |
Latest deploy log | https://app.netlify.com/sites/pr-fsd/deploys/652fc957db7a0000088ca223 |
Deploy Preview | https://deploy-preview-610--pr-fsd.netlify.app |
Preview on mobile | Toggle QR Code...Use your smartphone camera to open QR code link. |
To edit notification comments on pull requests, go to your Netlify site configuration.
Так, посмотрел проект сам, во многом все супер, мне нравится, есть несколько моментиков, которые хотелось бы поправить:
ui
, и тем не менее. Хочется, чтоб в индексах были ре-экспорты, а код был в сегментах.ui
, lib
и config
.pages/index.tsx
, который содержит роутинговую логику. По методологии на слоях не может быть кода вне слайсов, роутинг лучше разместить на слое App.Так, посмотрел проект сам, во многом все супер, мне нравится, есть несколько моментиков, которые хотелось бы поправить:
- Внутри слайсов на слоях Pages и Widgets нет деления на сегменты. Да, там по сути только один сегмент,
ui
, и тем не менее. Хочется, чтоб в индексах были ре-экспорты, а код был в сегментах.- В некоторых сегментах слоя Shared нет индексов, например,
ui
,lib
иconfig
.- На слое Pages есть вне-слайсовый файл,
pages/index.tsx
, который содержит роутинговую логику. По методологии на слоях не может быть кода вне слайсов, роутинг лучше разместить на слое App.
нечайно закрыл))), обработаю
@illright добавил везде реэкспорты и убрал indexсы в слоях.
Background
В примере реализуется простое приложение с просмотром криптомонет. Есть пару страниц. Есть фича с добавлением монеты в избранное. Авторизация, регистрация. Есть два api хоста, первый это CoinGecko api, второй свой прокси бэкэнд для firebase (вынес его чтобы фронт приложение не знало про firebase и было удобнее работать)
исходники: https://github.com/Yar56/cryptolight сайт: http://crypto-light.space/
Прошу сделать ревью. Спасибо!)