Как обеспечить конфигурацию модуля AngularJS?
В настоящее время я комбинирую традиционное приложение с некоторыми динамическими частями, написанными с помощью AngularJS. Я хотел бы предоставить некоторую конфигурацию с моего сервера на мой модуль. В этом случае я хотел бы настроить URL-адрес приложения "base". Все шаблоны можно найти в определенном месте, и это местоположение определяется сервером.
Итак, я попробовал что-то вроде этого:
angularForm.config(
function($routeProvider, TemplateLocator) {
$routeProvider.when('/', {
controller : TestController,
templateUrl : TemplateLocator.getTemplate('FormOuterContainer')
});
});
На сервере:
<script type="text/javascript">
angular.module('BoekingsModule.config', []).provider('TemplateLocator', function() {
this.$get = function() {
return // something
}
this.getTemplate = function(name) { return 'location...'; }
});
</script>
Однако я не уверен, что это правильный путь.
Короче говоря: как я могу предоставить некоторую (внешнюю) конфигурацию для модуля, не изменяя сам модуль?
Ответы
Ответ 1
Ничего себе, это было давно. Я полностью забыл об этом сообщении.
Итак, в конце концов я решил, что лучше использовать другой подход. Как сказал iwein, объединение SPA с рендерингом на стороне сервера делает приложение намного сложнее. Поэтому я извлек часть SPA в отдельное приложение, которое, в свою очередь, ссылается на (в моем случае) JSP.
Когда мой модуль нуждается в дополнительной настройке, он получает его с помощью REST API. Таким образом, часть приложения SPA полностью отделена от предоставленной на стороне сервера части.
Ответ 2
Есть несколько вещей, которые вы можете сделать
-
Отобразить местоположения в js на сервере.
Pro: меньше запросов → лучшая производительность (обычно)
Минусы:
- Объединение рендеринга на стороне сервера с помощью SPA делает систему более сложной, что приводит к более высоким затратам на обслуживание.
- сложнее сжать ваши js файлы, если вы хотите смешать на стороне сервера рендеринг, встраивание js в html также уродливо.
-
Извлеките расположение шаблона в service.
Из этой службы вы можете использовать $resource для извлечения данных с сервера в формате json. Это упрощает работу, но также может увеличить нагрузку на ваш веб-сервер.