All streams
Search
Write a publication
Pull to refresh
-6
0
Send message
У ангуляр-кли есть конфигуратор проксей для локальной разработки. Я бы посоветовал использовать его вместо самописного интерсептора, который замусоривает код. Пример использования (все ваши кейсы он отлично покроет):
github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md
Мы пробовали его использовать. На старте было хорошо, когда начали появляться хитрые кейсы, POST запросы с бизнес логикой, начали мокать эррор хэндлинг и т.д., поддержка стала очень дорогой и всё перевели на экспресс. Я бы советовал джейсон-сервер только на самом старте и только для crud операций, либо сферического RESTfull апа.
С помощью редакса это делается через имплеситный кусок пейлоада в экшене, в котором нужно указывать ассоциированный экшен по имени, а в руте стора создаётся глобальный лоадинг стейт вида loaders: Set<string> где string Это наименование потенциально асинхронного экшена (я на ts пишу, в js можно обычным массивом обойтись). И далее везде где нужно вы добавляете этот самый имплиситный кусок пейлоада, обрабатываете его в редьюсере и складываете в лоадинг стейт на уровне префетча данных. После того как произошёл саксесс/фейлур у вас так же неявно этот ключ очищается. Вуаля, у вас 0 строк бойлер плейта, чистый главный стейт и вы можете где угодно понимать идёт ли у вас загрузка нужных вам данных. А уж сделать глобальный лоадер таким макаром вообще проще простого, достаточно проверять что loaders.length > 0 и всё. Если интересно, то как буду дома смогу в коде показать. Или на гисте создать.
Можно подумать в Redux не флажки isLoading будут.

Как там в мире ту-ду листов и доставок пицц поживается?)
Элементарно, непонятно вообще почему вы этот кейс тут указали

Элементарно со стейт менеджером. Если это так же элементарно на мобх, поведайте пожалуйста. Ну чтобы настолько элементарно, чтобы не нужно было указывать бесконечных isLoading=true/false или каких-нибудь ещё бойлерплейтных флажков для данных, которые асинхронно загружаются.
Вы похоже не прочитали что я написал. Я не говорю что всё что я описал зависит от стейт менеджера. Но при его наличии эти задачи решаются практически нативно и без приседаний.
В МобХ из коробки.

Вот это особо повеселило. Это расстановка true/false флажков isLoading, то самое решение из коробки?
Любой мало-мальски сложный кейс заставит написать такую тучу костылей, что проще будет работу сменить (похоже все стартаперы по такой схеме сваливают, запилят РоС на мобх и бегут подальше в тот момент, когда нужно уже настоящие задачки решать).

Банальные кейсы, на вскидку, которые решаются на редаксе (или ngrx-store в ангуляр в связке с какими-нибудь эпиками/эффектами) по щелчку пальцев и которые нужно упороться делать на мобх и ему подобных:
  • Анду/реду;
  • Оффлайн мод;
  • Кансел/ретрай кейсы (нестабильная сеть, релогин, прочией кейсы);
  • Лоадинг стейты;
  • Канкарент модификации состояний (реализация полноценной асинхронной работы с приложением с участием нескольких пользователей);
  • Централизованная обработка ошибок;
  • Бонус: отсутствие рейс кондишенов.

Все эти кейсы условно-бесплатные со однонаправленным стейт-менеджером.
Просьба всегда в таких статьях обозначать одну очень важную вещь: все эти подходы работают в командах, где большинство разработчиков это самостоятельные боевые единицы и где концентрация джунов на уровне примесей, а не основное наполнение.
Особенно плакать хочется, когда на все проблемы в ангуляре, люди закидывают в ответы вредные советы вида:
  1. Поставь setTimeout(() => {}, 0) должно помочь! Если не поможет, то поменяй 0 на 100;
  2. Если падает "...expression has changed after it was checked...", то советуют в случайных местах повтыкать cdr;
  3. Если не понимают как работает DI, То советуют ВСЁ вытащить в рут-модуль, либо наоборот продублировать во всех чалдовых.

Список можно продолжать очень долго, первое что мгновенно всплыло. А уж какие советы дают «по борьбе с rxjs» совсем песня… количество семафоров, флажков и прочих подпорок поражает воображение.
Собственно в битве за консольное железо они полностью проиграли. Последнее поколение xBox и PS на AMD железе.
1. Можно без xml. Вместо ClassPathXmlApplicationContext берёте AnnotationConfigApplicationContext и в качестве аргумента передаёте в него класс, помеченный аннотацией @Configuration
2. Совершенно наоборот. При тестировании вы легко используете тестовый апликейшен контекст, в котором могут быть реализованы мокированные объекты, необходимые для тестов и инъекция будет абсолютно прозрачной.
В Англии (вроде кроме Лондона) разрешено на тротуарах парковаться. Ну и тротуары у них идут вдоль дорог, без газончиков. Следовательно и грязи нет и машинам есть где стоять.
Быстрые и мощные сервера не решают проблем с отсутствием кеширования (кеширование на уровне http-сервера это насмешка), иерархичности и EAV моделей.
Ещё забыли упомянуть, что при переезде на граф куэль вы получаете проблемы с кешированием, иерархическими структурами и EAV моделями, что очень часто встречается в энтерпрайзе. По факту граф куэль подходит для небольших сайтиков/приложений с очень простой и плоской моделью данных (как бы смешно не звучало, но тот же фейсбук имеет очень простую датамодель, кто работал с их графАпи подтвердит).
Это пока занимаешься формошлёпством. Что-то более-менее крупное, с командой больше 3-4 человек и растянутое во времени на месяцы/года, и тут ангуляр с его кривой обучения, его фреймвёрком и его подходами не так уж плох.
Что мешает взять компуктер с интегрированной графикой для домашних задач и ps4 для игр? Я примерно так и поступил, после подсчёта затрат на обновление домашнего ПК. Компик сейчас i5, 16 gb ram, ssd + 750 ti для домашних нужд/старых игра/дотки/csgo и ps4pro для современных игр. Обновить же комп для стабильных 60 фпс (учитывайте, что 30 фпс на консолях совершенно не равны 30 фпс на компе) в современных играх это 100к рублей без моинторов.
Похоже у вас какая-то другая Россия. Давно уже неадекваты и гопота обучаются в классах коррекции или на вечерке, уже лет как 10-15 двоечников не сажают в один класс к адекватам. Детей гоняют на другой конец города чаще всего, потому что там на вывеске написано не «Школа №35», а «Классический Лицей №1», не более.
Есть по крайней мере две крутые фичи, которых нет ни у кого:
  1. Возможность начать играть с трансляции или шарить сохранения/прогресс между другими игроками;
  2. Возможность играть по подписке, без необходимости покупки самой игры.

Ни 1, ни 2 нет ни в одном аналогичном сервисе. Все стриминговые сервисы сегодня требуют наличия купленной копии игры. А это значит что ты в любой случае платишь за игру + почти ни один стриминговый сервис не поддерживает онлайна, ибо все игры запускаются в режиме эмуляции => это равносильно для любой системы античита вмешательству в код игры => мгновенный бан.
Количество микросервисов у которых есть UI больше 30 штук. На каждый по «пары дней», выходит довольно жирная цифра. И на деле парой дней во многих не обойдёшься. В общем это очень сложно в деливери-плане. На бумаге и в голове это всё отлично звучит, а вот в реальном мире не работает.
Не взлетает с нашими кейсами, пробовали. Невозможно кастомизировать стили нормально под заказчиков, любые сервисы необходимо дублировать (авторизация, грант-менеджмент, локализации и т.д.), сам по себе стандарт сыроватый.

Information

Rating
Does not participate
Registered
Activity