Ответ 1
Фактически, приложения Angular допускают доступ с использованием протокола HTTP, поэтому неплохо использовать HTTP-сервер для разработки. Вы будете в "тех же условиях". Кроме того, это предотвращает наличие некоторых ограничений и ограничений:
- Абсолютные ссылки относительно имени домена. Я имею в виду, если вы попытаетесь ссылаться на ресурс с абсолютным путем от корневого пути вашего домена. Это, вероятно, не будет работать с файловым протоколом, так как его корневой путь является корневой папкой вашей файловой системы.
- JavaScript и AJAX. JavaScript не работает с протоколом
file://
, и вы можете установить некоторые ограничения безопасности в соответствии с браузерами.
Подробнее об этих проблемах см. в этих ссылках:
- https://developer.mozilla.org/en-US/Learn/Open_a_file_in_a_browser#Opening_a_local_file
- https://github.com/mrdoob/three.js/wiki/How-to-run-things-locally
Что касается выбора веб-сервера, для приложений Angular достаточно статических веб-серверов, и для этой цели есть несколько облегченных HTTP-серверов:
-
http-server
- https://github.com/indexzero/http-server -
lite-server
- https://github.com/johnpapa/lite-server
Интересная функция (например, lite-server
) состоит в живой перезагрузке. Сервер обнаруживает, когда вы обновляете какое-либо содержимое (HTML, JavaScript, CSS) и автоматически перезагружает соответствующие страницы в браузере. Это позволяет вам быть более эффективными при реализации вашего приложения.
Наконец, если вы реализуете как клиентские (Angular), так и серверные стороны, эти части должны выполняться на разных серверах (в среде разработки она может/должна отличаться в других средах, таких как производство). Я имею в виду:
- Статический HTTP-сервер для внешнего интерфейса, который обслуживает только элементы для приложения Angular.
- Динамический HTTP-сервер для задней части, который обеспечивает обработку на стороне сервера. Вы можете использовать эту технологию бесплатно (Node, Java,...)
Из-за этих двух серверов вы должны включить CORS (совместное использование ресурсов Cross Origin), чтобы сделать возможным приложение Angular для выполнения запросов AJAX в серверном приложении. На самом деле вы не в том же домене. Это то, что должно быть настроено на стороне сервера, чтобы возвращать заголовки CORS, когда браузер отправляет заголовок Origin
в запросе. Для получения дополнительной информации вы можете посмотреть эти ссылки:
- http://restlet.com/blog/2016/09/27/how-to-fix-cors-problems/
- http://restlet.com/blog/2015/12/15/understanding-and-using-cors/
Еще одна вещь, о которой следует знать, если вы используете функцию маршрутизации Angular, - это то, что режим истории HTML5 имитирует некоторые "реальные" адреса, но в этом случае вам нужна некоторая настройка на вашем веб-сервере, чтобы загрузить index.html( ваш файл точки входа) для каждого URL-адреса, соответствующего каждому маршруту. См. Этот ответ для получения дополнительной информации: Когда я обновляю свой сайт, я получаю 404. Это с Angular2 и firebase.
Последнее, что нужно рассмотреть, - это упаковка вашего приложения для вашей производственной среды. Вам необходимо сделать ваше приложение эффективным (минимизация элементов, согласование файлов JavaScript, предварительная загрузка шаблонов,...). На этом уровне нет необходимости хранить два отдельных сервера, а часть Angular может быть упакована в приложении на стороне сервера. В этом случае последний должен иметь возможность обслуживать некоторые файлы statis.
Надеюсь, это поможет вам, Thierry