Javascript 无法理解Angular JS中的控制器功能

Javascript 无法理解Angular JS中的控制器功能,javascript,angularjs,dependencies,Javascript,Angularjs,Dependencies,我是Angular JS的新手。我试图通过了解控制器的功能来获得一些深入的知识 我遇到了以下代码片段 var App = angular.module('clientApp', ['ngResource', 'App.filters']); App.controller('ClientCtrl', ['$scope',function ($scope) { }]); 如果我写下: var App = angular.module('clientApp', ['ngResource'

我是Angular JS的新手。我试图通过了解控制器的功能来获得一些深入的知识

我遇到了以下代码片段

var App = angular.module('clientApp', ['ngResource', 'App.filters']);
 App.controller('ClientCtrl', ['$scope',function ($scope) {

   }]);
如果我写下:

 var App = angular.module('clientApp', ['ngResource', 'App.filters']);
 App.controller('ClientCtrl', function ($scope) {

   });
我的理解是: 我知道方括号中写的东西是对特定模块或控制器的依赖关系。但是,我不明白为什么要写

          "['$scope',function($scope)" 
而不是

   App.controller(controllername,function($scope){

   });

我们将非常感谢您的帮助

它允许缩小AngularJS代码。AngularJS使用参数名将值注入控制器函数。在JavaScript缩小过程中,这些参数被重命名为较短的字符串。通过告诉使用字符串数组将哪些参数注入函数,AngularJS在重命名参数时仍然可以注入正确的值。

实际上应该按照以下方式编写:

首先,我们创建并命名一个名为“
app
”的
模块。我们还创建了一个名为“
SomeController
”的
控制器

angular
    .module('app')
    .controller('SomeController', SomeController);
现在,我们将所需的依赖项注入控制器

SomeController.$inject = ['dataservice', 'logger'];
现在我们为控制器创建corresponding函数。注意这些依赖项是如何包含的吗

function SomeController(dataservice, logger) {
    var vm = this;
    vm.avengers = [];

    activate();

    function activate() {
        return getAvengers().then(function() {
            logger.info('Activated Avengers View');
        });
    }

    function getAvengers() {
        return dataservice.getAvengers()
            .then(function(data) {
                vm.avengers = data;
                return vm.avengers;
            });
    }
}

你不必这样做,事实上,我认为这使得角度代码更难扫描/读取。我不介意libs和其他黑匣子使用它(至少),但我不认为(希望)微小的应用程序文件会减慢启动速度,因为它们没有缩小…你试过我的答案吗?