10

目前,我正在将传统应用程序与一些使用 AngularJS 编写的动态部分结合起来。我想从我的服务器提供一些配置到我的模块。在这种情况下,我想配置应用程序“基本”URL。所有模板都可以在特定位置找到,该位置由服务器确定。

所以我尝试了这样的事情:

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>

但是,我不确定这是正确的方法。简而言之:如何在不更改模块本身的情况下为模块提供一些(外部)配置?

4

2 回答 2

4

你可以做几件事

  1. 在服务器上渲染 js 中的位置。

    优点:更少的请求 -> 更好的性能(通常)

    缺点

    • 将服务器端渲染与 SPA 相结合会使系统更加复杂,从而导致更高的维护成本。
    • 如果要在服务器端渲染中混合使用,则很难正确压缩 js 文件,在 html 中嵌入 js 也很丑陋。
  2. 将模板位置提取到服务

    从此服务中,您可以使用$resource从服务器获取 json 格式的数据。这使事情变得更简单,但它也可能增加您的 Web 服务器的负载。

于 2013-03-02T07:55:08.217 回答
0

哇,已经很久了。我完全忘记了这篇文章。

所以,最后我决定最好使用另一种方法。就像 iwein 所说,将 SPA 与服务器端渲染相结合会使应用程序变得更加复杂。因此,我将 SPA 部分提取到一个单独的应用程序中,该应用程序又从(在我的情况下)JSP 中引用。

当我的模块需要一些额外的配置时,它会使用 REST API 来获取它。这样,应用程序的 SPA 部分与服务器端渲染部分完全分离。

于 2014-09-15T13:27:17.410 回答