Как обеспечить конфигурацию модуля 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. Это упрощает работу, но также может увеличить нагрузку на ваш веб-сервер.