Зачем нужен HTTP-сервер для запуска Angular 2?

Я исхожу из традиционной среды Java/Spring, чтобы узнать Angular 2 framework, и мне трудно понять многие фундаментальные понятия.

Я читаю книгу Manning Angular 2 с TypeScript, и он говорит, что мне нужно HTTP-server запустить мой SAP' s. Почему это?

Я думал, что Angular работает на клиентской машине. Так что же такое функция сервера? Если я просто открываю HTML, Angular не делает свою магию.

Ответы

Ответ 1

Фактически, приложения Angular допускают доступ с использованием протокола HTTP, поэтому неплохо использовать HTTP-сервер для разработки. Вы будете в "тех же условиях". Кроме того, это предотвращает наличие некоторых ограничений и ограничений:

  • Абсолютные ссылки относительно имени домена. Я имею в виду, если вы попытаетесь ссылаться на ресурс с абсолютным путем от корневого пути вашего домена. Это, вероятно, не будет работать с файловым протоколом, так как его корневой путь является корневой папкой вашей файловой системы.
  • JavaScript и AJAX. JavaScript не работает с протоколом file://, и вы можете установить некоторые ограничения безопасности в соответствии с браузерами.

Подробнее об этих проблемах см. в этих ссылках:

Что касается выбора веб-сервера, для приложений Angular достаточно статических веб-серверов, и для этой цели есть несколько облегченных HTTP-серверов:

Интересная функция (например, lite-server) состоит в живой перезагрузке. Сервер обнаруживает, когда вы обновляете какое-либо содержимое (HTML, JavaScript, CSS) и автоматически перезагружает соответствующие страницы в браузере. Это позволяет вам быть более эффективными при реализации вашего приложения.

Наконец, если вы реализуете как клиентские (Angular), так и серверные стороны, эти части должны выполняться на разных серверах (в среде разработки она может/должна отличаться в других средах, таких как производство). Я имею в виду:

  • Статический HTTP-сервер для внешнего интерфейса, который обслуживает только элементы для приложения Angular.
  • Динамический HTTP-сервер для задней части, который обеспечивает обработку на стороне сервера. Вы можете использовать эту технологию бесплатно (Node, Java,...)

Из-за этих двух серверов вы должны включить CORS (совместное использование ресурсов Cross Origin), чтобы сделать возможным приложение Angular для выполнения запросов AJAX в серверном приложении. На самом деле вы не в том же домене. Это то, что должно быть настроено на стороне сервера, чтобы возвращать заголовки CORS, когда браузер отправляет заголовок Origin в запросе. Для получения дополнительной информации вы можете посмотреть эти ссылки:

Еще одна вещь, о которой следует знать, если вы используете функцию маршрутизации Angular, - это то, что режим истории HTML5 имитирует некоторые "реальные" адреса, но в этом случае вам нужна некоторая настройка на вашем веб-сервере, чтобы загрузить index.html( ваш файл точки входа) для каждого URL-адреса, соответствующего каждому маршруту. См. Этот ответ для получения дополнительной информации: Когда я обновляю свой сайт, я получаю 404. Это с Angular2 и firebase.

Последнее, что нужно рассмотреть, - это упаковка вашего приложения для вашей производственной среды. Вам необходимо сделать ваше приложение эффективным (минимизация элементов, согласование файлов JavaScript, предварительная загрузка шаблонов,...). На этом уровне нет необходимости хранить два отдельных сервера, а часть Angular может быть упакована в приложении на стороне сервера. В этом случае последний должен иметь возможность обслуживать некоторые файлы statis.

Надеюсь, это поможет вам, Thierry

Ответ 2

Если это что-то вроде AngularJS 1.3, он делает запросы AJAX для получения HTML-шаблонов, и для этого, по крайней мере, ему нужен настоящий HTTP-сервер.

Ответ 3

В настоящее время Angular использует PathLocationStrategy по умолчанию, для которого требуется сервер, который выполняет некоторое перенаправление (см., например, Angular 2.0 маршрутизатор, не работающий при перезагрузке браузера) Если вы используете HashLocationStrategy, это не обязательно. Обычно вы загружаете приложение-браузер с HTTP-сервера в любом случае, и если вы правильно настроите Angular, это должно сделать это.

Во время разработки вам нужен сервер, потому что браузеры имеют некоторые ограничения, которые они позволяют при загрузке из файлов напрямую.

Ответ 4

Для обслуживания статических файлов ему нужен Lite-сервер.

Обоснованием этого является безопасность.

Браузеры не разрешают прямой запрос в файловой системе.

Ответ 5

Я только что обнаружил, что Lite-сервер не будет установлен для меня.

у меня отлично работает angular-http-server из коробки:

https://www.npmjs.com/package/angular-http-server