Это конец 8-й недели, и это не так далеко от конца семестра. Для окончательного проекта мы возвращаемся с React + Redux и Epxress (все библиотеки и фреймворки, с которыми я знаком), так что мне будет легче выполнять работу. Закончив wishpool и получив отзывы от тиммейтов по предыдущим проектам, вот что у меня получилось.

Во-первых, с технической точки зрения я лучше познакомился с Angular и чувствую, что у него есть свои преимущества и недостатки по сравнению с React. На самом деле Angular очень мощный, если, конечно, вы работали с ним долгое время и умеете им пользоваться. Кривая обучения крутая, это означает, что вначале вы можете чувствовать себя легко, но при работе с более крупным проектом это уже не будет так. Angular может делать почти все то же, что и другие фреймворки, только другими способами. Скажем, для хранения данных на клиентском сайте с помощью Redux у вас есть 1 хранилище, и вы поместите все, что получили с сервера, в это хранилище, и как только вы получите данные, скажем, профиль пользователя, вам больше никогда не понадобится их извлекать. (если вы знаете, что ваши данные обновлены и их нужно получить снова).

С другой стороны, в Angular вы обычно будете хранить данные в каждом контроллере, и, конечно же, согласно соглашению Angular, в контроллере вы не можете получить доступ к данным из другого контроллера, кроме $rootScope. Время жизни этих контроллеров также не является временем жизни приложения, это означает, что когда вы переключаетесь на контроллер B с контроллера A, а затем возвращаетесь к контроллеру A, все данные в A исчезают. Таким образом, если в A у вас есть вызов API для получения данных, он будет вызван снова, когда вы переключитесь обратно на A, и это ухудшит производительность. Эту проблему можно легко решить, поместив все в $rootScope, тогда вам никогда не придется беспокоиться о повторяющихся и избыточных вызовах API. Однако такой подход сделает ваш $rootScope беспорядочным и сложным в управлении, особенно когда вашему приложению необходимо обрабатывать сложные наборы данных. Вот почему я придумал решение для кэширования с использованием $cacheFactory.

Таким образом, в основном вы будете использовать эту службу кэширования для создания кэшей, кэширования и получения данных в отдельных контроллерах. Я использую Promise здесь, потому что в контроллере я использую $http для получения данных с сервера, но я проверю, находятся ли данные в кеше или нет, прежде чем я это сделаю, поэтому, если они были помещены в кеш раньше, я должен вернуть данные, завернутые в Promise, похожи на то, что делает $http.

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

Учась на предыдущих ошибках в первых 3 проектах, я считаю, что для финального проекта у нас будет намного лучший продукт.