Сейчас резолвы из роутера я использую для каких то более важных компонентов/данных, без которых функционирование не возможно в принципе, таких как, данные о юзере ,при авторизации и так далее. А не особо важные данные, компоненты грузят самостоятельно из сервиса по ходу дела, чтобы не ожидать лишнее время резолва и держать максимально логику в себе, оставаясь самостоятельными единицами. Из роутера обычно прокидываю только параметры стэйта/url, такие как id и так далее.
Просто этот виджет он основной, так сказать системный, висит на сайдбаре, т.е на родительском уровне, тех подстейтов которые уже меняются юзером. Сам он грузится и резолвится один раз всего, при загрузке приложения.
"а сервис уже как-то уведомляет систему о изменении стэйта и перезагружаются нужные ресолверы." - вот так наверное лучше было бы мне вопрос сформулировать, как именно стоит делать эти уведомления между сервисами?
Я пока вижу два пути:
1) делать флаг на подобии isChanged, который обновляется при методах patch, post, detele и повесить на него вотчер из соседнего сервиса, который грузит данные при его изменении, но это опять же не сэкономит строк по сравнению с тем что есть сейчас:
TransactionService.update(this.transaction).then(() => SidebarService.refreshStats());
будет:
TransactionService.update(this.transaction).then(() => this.isChanged = true);
+ дополнительный вотчер и флаг в каждом сервисе.
2) Второй использовать эвенты и подписываться на них
Круче всего, как мне кажется конечно, было бы реализовать идею с интерсептором, который при определенном url и методе, дергает обновление данных в сервисе, тогда с дальнейшим расширением, не было бы вообще проблем.
Сейчас кстати так и есть, информация храниться на аккаунтах, не так надежно конечно, как в примерах.
По двойной трате не совсем понял вопроса. Как такое может произойти?
Все зависит от того, что в представлении, какие данные надо чаще выводить. Исходя из этого строится схема. А при выдаче вполне можно использовать populate, чтобы подгружать все Ref'ы.
Также связь может быть не только Ref по ссылке, а еще и вложенной, когда у usera массив историй хранит не ссылки на истории, а сами истории. Тогда юзер всегда будет знать о массиве историй внутри, а каждая история будет привязана к юзеру и добавления удаления по одному запросу.
Но тоже по ситуации использовать.
Вопрос идет про сам метод Say. Вы просто добавили собственный метод Say в Rabbit, который, вызывает метод Say от Animal, но возвращает указатель на Rabbit, вместо Animal, как было в моем варианте.
Это решает проблему, но приносит другую. К примеру на Animal, есть много методов.
А так же есть 50 различных животных, в которых встроен Animal, и у каждого есть метод Say, который везде одинаковый и нет смысла делать копипаст, если он уже есть на Animal.
Я вижу тут два варианта решения
1: Забыть про чейнинг метода Say вообще, так как он будет всегда возвращать указатель на Animal.
2: Делать везде копипасту метода, как в вашем примере.
В корне не правильно. Я не выбираю среди Angular || React || Ember или sails || Rails…
Я не могу выбрать среди 1 и 2 пункта. Фронтэнд и бекэнд, так как плохо понимаю какие захачи они решают и разницу (в основном про бэкэнд речь идет)
Сергей Протько: спасибо, так по понятнее стало.
То есть по сути backed это мозги приложения, и к примеру если пишется spa по удалению слов из трека, то здесь большой backend на сервере и просто небольшой заглушки на фронте, будет достаточно.
А к примеру блог, имеет большой фронт, с админкой и кучей страниц, а backend делает только связь фронта с базой данных и выдает страницы из шаблонов, под конкретный пост/юзера/тэг.
Правильно понимаю?
"это фреймворки для организации WEB интерфейса к вашему приложению. И не более."
Что под этим подразумевается? Я не понял.
Есть ли пара каких то реальных примеров, задач, которые решаются с помощью этого?
Данил Антошкин: Бетку накати на второй раздел и посмотри, как ведет себя.
А вообще лаги разные бывают, кто то замечает, кто то нет. Отношение у всех разное.
4гб для современных систем да еще и со встроенной видеокартой, всегда будет впритык. Тебя спасает только скорость ССД, которая быстро справляется со свопом. Будь там HDD, были бы страдания.
Данил Антошкин: По скрину я бы не сказал, что есть проблемы с памятью. Не забудь, что видеокарта может еще отжирать часть.
Если не вылазит сообщения о не хватки памяти, значит с ней все ок.
Пытайся мониторить показатели ЦП и Памяти во время лагов, после чего приходят, после чего пропадают. (Бывает, какой то процесс съедает ресурсы ЦП до 100).
Вообще машинка не сильная и вполне возможны какие то не большие лаги. Если даже на топовой 15 они есть(это косяк системы уже).
Данил Антошкин: Раз пишешь, что систему не грузишь, вспоминай, не отключал ли своп, или еще с какими системными настройками игрался. Это и приводит к тормозам и проблемам с памятью.
А так инфы маловато, о модели ноута, и "не нагружаю" - интересно было бы услышать по подробнее о запущенном софте.