Javascript Self Invoking Angular控制器中的函数

Dim*_*ris 1 javascript angularjs

我使用自调用函数来包含角度控制器内的所有javascript代码(我想我在某处看到它是最佳实践).所以我的控制器看起来像这样:

(function() {
// code
})()
Run Code Online (Sandbox Code Playgroud)

我使用gulp将所有控制器合并到一个文件中.我的问题是这个.这是否意味着我的应用程序启动时将调用并执行所有Javascript代码?如果是这样,我想这不是一个很好的方法.这个问题有什么解决方案吗?任何意见?谢谢

C14*_*14L 5

不,并非所有代码都被执行.定义Angular模块时

(function() {
  'use strict';

  angular
    .module('myModule', [])
    .controller('myController', ['$http', myControllerFunc]);

  function myControllerFunc ($http) {
    // ...
  }
})();
Run Code Online (Sandbox Code Playgroud)

执行的只是angular注册模块和控制器的方法.但实际的控制器逻辑在回调函数中,并且仅在调用控制器时调用(例如,通过路由器).

所以,一切都很好,并将代码包装在匿名函数中是一个好主意,例如myControllerFunc,保持在全局命名空间之外.