Веб-сайты AngularJS: отдельные SPA и несколько приложений/компонентов SPA

Этот вопрос прослушивал меня уже некоторое время.

Если вы создаете веб-сайт с множеством функций, используя Angular, лучше ли создавать огромный SPA или разбивать веб-сайт на функциональные "приложения" и создавать SPA для каждого приложения?

Например, у нас есть сайт для социальных сетей с лентой уведомлений, профилем пользователя, отчетами и группами. Собираете ли вы все эти функции в единый SPA или создаете 4 разных SPA и позволяете базовому пути маршрута к правильному SPA?

например.

www.mywebsite.foo #/Профиль/12345/образование

против

www.mywebsite.foo/profile/12345#/education

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

Ответ 1

Марк Коллингс говорил о вашей статье:

https://markwillcollins.silvrback.com/7-things-i-wish-i-knew-about-angularjs

"3. Структура критическая..."

Он предлагает планировать каждую страницу перед началом работы.

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

Я предпочитаю изолировать в небольших службах, потому что я не вижу преимуществ для обмена небольшими битами javascript в сложной иерархии нагрузки, используя require.js или аналогичный подход.

Ответ 2

Итак, вот что я узнал и что я сделал:

Мой сервер имеет маршрут по умолчанию:

  var express = require('express');
  var router = express.Router();

  ... 

  router.get('*', function(req, res) {
    res.sendfile(path.resolve(__dirname + '/../../../build/index.html')); // Send index.html for HTML5Mode
  });

  return router;

Итак, у меня может быть несколько SPA на моем сайте, потому что я просто отправляю для них разные html-шаблоны. Приложению стиля HTML5 необходимо будет выбрать приложение по умолчанию, подобное выше.

Что принадлежит одному SPA?

Все состояние, которое взаимосвязано в пользовательском интерфейсе. Будет сложно разделить состояние между приложениями (например, проверку подлинности). Конечно, они могут получить доступ к полному состоянию вашего сервера.

Когда это полезно?

Если у вас есть макеты, которые показывают явно разные варианты использования, например. два вида пользователей с разными логинами. Или два разных "места", в которые они вошли.

Что нужно получить?

  • Если приложение "панель инструментов" загружает кучу графического кода, но приложение "целевая страница" не нуждается в нем, вы можете сделать лучший опыт для конечных пользователей.
  • Если пользователь испытывает разные ситуации, легче хранить другой код в разных местах.
  • В моем случае на сервере были также созданы преимущества SEO-рендеринга шаблонов целевой страницы.

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