All streams
Search
Write a publication
Pull to refresh
3
0
Send message

нет не будет ни на байт распухать прокси-слой - там нет методов АПИ - они появляются только в рантайме в момент их вызова в приложении (псомотрите демо проект)

да, тот кто пишет код - тот его и описывает в типах - извините фронтэндщики не телепаты! )

да я же вам написал - никаких сложностей - как и при генеративном подходе как и при ручном так и при использовании Proxy вам в любом случае в коде приложения нужно заменить удаленный вызов на 2 новых.

В 2х первых вариантах - вам еще нужно эти изменения привнести в АПИ слой - в моем варианте этого не нужно делать

надеюсь мы пришли к общему пониманию )
прошу прощения, но по вышезаданным вопросам я не уловил акцент

если убрать не свойственную АПИ логику из АПИ слоя - все вопросы решаются легко, а так получается что бизнес-логика последовательности вызова протекает в сервисный слой который ничего не должен знать о работе приложения вообще

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

слой АПИ в приложении должен выполнять только транспортную роль и должен быть простым передастом )

у нас тоже все по феншую

function Counter({count, increment}: {count: number, increment: ()=>void}) {
    return <button onClick={store.increment}>{store.count}</button>;;
}

function CounterContainer() {
    const { count, increment} = useAppStore(state=> state.counter)
    return <Counter count={count} increment={increment}>;
}


по поводу способа передачи параметров одним объектом или несколькими свойствами - это уже на вкус

как можете видеть никаких проблем с тестированием
но на самом деле - это наивная реализация - у нас слоеная архитектура и в контейнерах мы вызываем уже не стор а юзкейсы

так как у вас прекратил существование common1  и апоявились 2 новых метода: entity2 и entity3 вам соответственно в интерфейсе API нужно удалить описание старого метода и добавить описание 2х новых - все!

Когда типы будут обновлены на клиенте - появится ошибка в приложении на удаленном методе, что такого метода не существует - удаляете в приложении старый вызов и делаете 2 новых

АПИ слой на клиенте не трогаете и не меняете

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

да, и тестировать в ней тоже нечего - тестируется сервер

вы не правы - посмотрите прикрепленный демо проект с описанием действий

const UseAppStore = create(() =>{
catsCounter : 0,
dogsCounter: 0,
....
})

function Counter(){
// const catsCounter = UseAppStore(state => state.catsCounter)
const dogsCounter = UseAppStore(state => state.dogsCounter)
...
}


я правильно понял задачу что нужно выбрать один из каунтеров?

нет не верно вы меня поняли!
я же написал в рекомендациях, что вопреки документации не нужно писать методы в стор - наоборот их лучше хранить отдельно, каждый метод в своем модуле - там он легче читается и тестируется

В сторе хранить нужно только структуры данных

это точно причем они налетают толпой и начинают жутко минусовать - это у них комплекс какой-то прям
я уже их называю MobX маньяками ))

ну почему же никто не читает про опыт который был уже в индустрии до того как вы пришли в нее!?? )
Был у нас MVC а затем и библиотеки типа Backbone когда в приложении были сотни таких атомов в иде моделей и коллекций. Это приводило к жути на проекте - куча непрозрачного кода для связи этих атомом между собой, направления потоков обновлений и их последовательность превращалась в хаос - это нигде явно не видно только руками по всему коду!!! В конце концов это приводило постоянно к зацикливаниям изменений для нахождения которых требовались адские усилия - брейкпоинты приходилось ставить по всему коду приложения

Вот почему индустрия сбежала от MVC во FLUX а затем доработали его в REDUX!
Если вам хочется понаступать на эти грабли - всегда пожалуйста :)

я понял вопрос
смотрите у нас, как я и написал ниже в рекомендация, все связанные структуры данных хранятся в одном сторе, поэтому когда вы вызываете хук `useAppStore` вы получаете доступ ко всем структурам в сторе

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

Если я не ответил на ваш вопрос - уточните я попробую объяснить

бэки при сборке кода автоматом от tsc получают описание интерфейса и оформляют его в новую версию пакета
Фронты импортируют только этот интерфейс и ничего не исправляют кроме изменившихся вызовов в приложении
Прокси объект не меняется никогда

ну почему никто не читает статью! )))
там написано что прокси пишется только один раз вначале и не меняется больше никогда!
меняются только типы

ну как бы мягко сказать что мы классы не используем совсем

у нас профит в том, что данный подход хорошо ложится на используемый у нас протокол JSON RPC и мы ничего не пишем и не генерируем - в процессе сборки бэк получает сгенерированный tsc интерфейс и отправляет его в пакет.
Фронты импортируют новую версию и патчат только код приложения

демка: https://github.com/budarin/proxy-api-demo

Information

Rating
Does not participate
Registered
Activity