Задать вопрос
@DarkLynx91

Как организовать приложение?

Доброго времени суток.
Пишу приложение на AngularJS.
На backend NodeJS, обмен данными с сервером происходит исключительно через socket.io (кроме авторизации).

Интересует вопрос, как лучше построить архитектуру приложения на AngularJS, если например при обновлении какой то модели, когда я получаю данные с сервера мне нужно выводить различные Notification.

Ситуация следующая. В приложении есть методы обновления какой то модели, например проект. У проекта есть какие то поля, вроде названия, даты создания и массив людей которые в нем участвуют. Есть методы которые обновляют поля модели и есть отдельный метод который добавляет участников в проект, но этот метод по мимо этого еще и создает пользователя.
Я подвешиваюсь на событие, например projectUpdated. В случае если я изменил например название в каком то методе мне нужно написать пользователю что проект обновлен. А если я добавляю нового участника в проект, я также получаю событие projectUpdated, тк его генерирует тот же метод на сервере, но мне надо написать пользователю что участник добавлен. В этом никакой проблемы нет, но в данном случае я напишу пользователю 2 сообщения, и что проект обновлен и что участник добавлен.
Так вот проблема в чем, либо вообще отказаться от оповещения пользователя о таких вещах, ведь это и так отразится на представлении и он это визуально увидит, либо что то с этим придумать.

Вот вроде сумел сформировать свою мысль.

Upd: Генерировать разные события на "каждый чих" мне кажется как то неправильно. Или я ошибаюсь?

Спасибо!
  • Вопрос задан
  • 310 просмотров
Подписаться 2 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Если мы говорим только о том как сказать приложению что что-то случилось, например пришла какая-то нотификашка, то тут проще всего использовать события через $rootScope.

Насильно пихать изменения с сервера на клиент не очень удачная идея, лучше уведомить о том что что-то случилось а потом просто забрать данные запросом с клиента. То как вы организуете иерархию событий это уже ваше дело, это дело бэкэнда. Скажем событие вида ProjectUpdated не имеет смысла, так как не характеризует это событие. А вот MemberJoined это уже норм, можно наследовать по сути от ProjectUpdated и таким образом создавать какую-то иерархию. Но двух событий на одно действие действительно быть не должно, просто события должны быть осмысленными.

На клиент можно передавать просто событие, и добавлять его тип. Тогда листенер будет один а потом это все будет как-то разруливаться в приложении.

Ну и да, в идеале ваше приложение должно мало чего знать о том как работать с socket-io и как у вас вообще происходит взаимодействие с сервером, то есть все что всязано с отправкой/получением данных стоит инкапсулировать в сервисы.

Далее без конкретики сложно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы