Size: a a a

JavaScript.Ninja

2021 March 16

II

Ilya Izilanov in JavaScript.Ninja
это тогда не сервис) а набор функций
источник

PG

Pavel Gubin in JavaScript.Ninja
Ilya Azin
Тип что можно все эти actions/reducers/thunks/sagas/epics и т.д. назвать каким-нибудь одним словом
При росте проекта будут проблемы в навигации и внедрении новичков в эту схему работы, для себя в пока выбрал container/actions|reducer|..
источник

IA

Ilya Azin in JavaScript.Ninja
А кто нить использует слово model для этого? (и внутри него уже храня редьюсеры/экшены и т.д.)
источник

AS

Alex Stepchenkov in JavaScript.Ninja
Ilya Izilanov
это тогда не сервис) а набор функций
т.е. по вашему сервис без хранения состояния это не сервис?
источник

AS

Alex Stepchenkov in JavaScript.Ninja
Ilya Azin
А кто нить использует слово model для этого? (и внутри него уже храня редьюсеры/экшены и т.д.)
Это совсем не туда уже
источник

IA

Ilya Azin in JavaScript.Ninja
Alex Stepchenkov
Это совсем не туда уже
А почему?)
источник

AS

Alex Stepchenkov in JavaScript.Ninja
Модель в общем понимании - это класс описывающий какую то структуру данных и методы работы с ней
источник

AS

Alex Stepchenkov in JavaScript.Ninja
то о чем вы говорите - это хэлперы стейт-менеджера  и сайд-эффкты для них
источник

AS

Alex Stepchenkov in JavaScript.Ninja
Разделите ваше приложение условно на framework-specific и framework-agnostic функционал. То что относится к framework-agnostic скорее всего и является вашей бизнес-логикой. Вынесите его куда то в отдельный сервис и переиспользуйте в стейт-менеджере обычными вызовами методов
источник

AS

Alex Stepchenkov in JavaScript.Ninja
Или рассмотрите на примере "калькулятора". Слой UI понятен, слой бизнес-логики в этом случае может выполнять класс Calculator который описан в модели. ВЫ можете для реализации калькулятора взять стейт-менеджер и нафигачить редьюсеров. Но так или иначе каждый редьюсер - это функция реализующая часть бизнес-логики которая может быть вынесена - допустим в сервис "calculator.service.js". И этот "набора функций" как сказали выше - вполне себе бизнес-логика которую можно достаточно легко переиспользовать в случае отказа от стейт-менеджера. Это мое ИМХО
источник

AS

Alex Stepchenkov in JavaScript.Ninja
Ilya Azin
Ну да, я скорее вот про такую вещь)
Если мы о таком формате говорим - тогда по моему мнению это было бы так
ui - компоненты интерфейса
state - хранилище состояния (как раз весь список того что у Вас описано)
services - набор тех самых "чистых" функций для бизнес логики и доступа к данным
repository - слой доступа к данным (http, ws, graphQL, etc.)

Итого схема была бы приблизительно такая
UI -> State -> Service -> Repository
источник

IA

Ilya Azin in JavaScript.Ninja
источник

IA

Ilya Azin in JavaScript.Ninja
спасиб, шо расписал
источник

II

Ilya Izilanov in JavaScript.Ninja
Alex Stepchenkov
Или рассмотрите на примере "калькулятора". Слой UI понятен, слой бизнес-логики в этом случае может выполнять класс Calculator который описан в модели. ВЫ можете для реализации калькулятора взять стейт-менеджер и нафигачить редьюсеров. Но так или иначе каждый редьюсер - это функция реализующая часть бизнес-логики которая может быть вынесена - допустим в сервис "calculator.service.js". И этот "набора функций" как сказали выше - вполне себе бизнес-логика которую можно достаточно легко переиспользовать в случае отказа от стейт-менеджера. Это мое ИМХО
ну это работает только для калькуляторов или чего то очень простого
источник

II

Ilya Izilanov in JavaScript.Ninja
когда у вас появляется необходимость в нескольких сервисах в другом сервисе / нетривиальной связи слоя репозитория и стейта, это уже так не работает
источник

II

Ilya Izilanov in JavaScript.Ninja
я понимаю корни разделения на services / repository, так на бэке делают например, но даже там они вообще не framework агностик
источник

AS

Alex Stepchenkov in JavaScript.Ninja
Зависимости между сервисами - реализуются через dependency injection.
Если у Вас стейт обращается напрямую к репозиторию - значит что рефакторинг будет мягко говоря не простым. С такой логиком можно все фигачить прямо в компонентах - почему бы и нет?
источник

AS

Alex Stepchenkov in JavaScript.Ninja
Как то люди раньше жили без редуксов и ничего :)
источник

M

Maksym in JavaScript.Ninja
Ребят помогите, такая проблема, обновил node.js , у меня вебпак gulp ,запускаю страницу по команде gulp и такая ошибка в терминале, с чем связано? после обнове node такой прикол
источник

AS

Alexey Shultsev in JavaScript.Ninja
Maksym
Ребят помогите, такая проблема, обновил node.js , у меня вебпак gulp ,запускаю страницу по команде gulp и такая ошибка в терминале, с чем связано? после обнове node такой прикол
Проблема скорее не с галпом, а с node-sass
У меня была когда-то ошибка, что node sass v5 ругался то ли на новую ноду, то ли на реакт 17-й версии
Попробуйте удалить текущий node sass и установить "npm i node-sass@4.14.1", мне в свое время это помогло
источник