【问题标题】:Why should I use several modules in angularjs?为什么要在 angularjs 中使用多个模块?
【发布时间】:2014-10-16 07:51:23
【问题描述】:

我已经阅读了很多关于 angularjs 中模块的描述,并且对它们的真正用途感到困惑。让我用一些代码来解释我的情况,这首先是我应该根据最佳实践做的:

angular.module('secondModule',[]).controller('myController',function(){
    //do something
};

angular.module('app',['secondModule']);

但是,正如我所看到的(以及阅读部分 angularjs 源代码),这与以下内容完全相同:

angular.module('app',[]).controller('myController',function(){
    //do something
};

基本上,无论我在哪个模块中创建我的控制器、过滤器、指令等。它们仍将全部进入一个全局存储桶,一旦创建控制器,它就会简单地注册到全局控制器列表中并且没有任何连接,所以一直到创建它的模块。

我似乎看到模块的唯一好处是指定浏览器应以何种顺序解释它们(通过在模块声明中指定依赖项)。

所以问题很简单,我错过了什么,当我使用这些模块创建的任何东西仍然位于同一个全局存储桶中时,我为什么要使用模块?

【问题讨论】:

    标签: angularjs module


    【解决方案1】:

    在像您这样的简单情况下,假设您不打算重复使用您的代码或将其打包以供第三方使用,那么使用模块可能没有实际用途。另一方面,以我目前正在开发的系统为例。

    我们有这个功能块,允许最终用户或管理员操作一些安全设置。基本上用户可以调整自己的设置,或者管理员可以为用户调整它们。最终用户和管理员的实际调整过程是相同的,但它们位于不同的 AngularJS 应用程序中。

    所以我们可以说将调整代码放在一个单独的模块中,然后从两个单独的 AngularJS 应用程序中调用该模块。管理员有自己的应用程序现在调用调整模块,用户也有自己的应用程序现在也加载调整模块。

    要更新的一段代码,但它被两个不同的应用程序使用。

    在我们的特定应用程序中,它是一个 Java 应用程序的两个独立方面,它通过使用 Spring MVC 集成了 AngularJS 来处理数据,但是这两个 AngularJS 应用程序必然是完全相互分离的。然而他们使用了大量相同的代码......

    这有意义吗?

    【讨论】:

    • 这很有意义,是使用模块的好理由。我的例子只是一个例证。在我的实际情况下,虽然我将使用 requirejs 来加载我的“模块”。因此,您示例中的调整代码将位于一个或多个 js 文件中,并且不同的最终用户和管理员设置界面将需要这些文件。如果我只有一个“全局”角度模块,那也没关系。
    • 对,如果您使用的是 RequireJS,那么您已经在以不同的方式处理这个问题。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 2014-12-16
    • 2016-03-10
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多