Javascript 在Angularjs中注入服务的正确方法是什么?

Javascript 在Angularjs中注入服务的正确方法是什么?,javascript,angularjs,Javascript,Angularjs,我只是在学习AngularJS,我发现了很多不同的方法来做同样的事情,我真的很想知道哪一个更好,为什么选择一个而不是另一个 我看到了控制器的两种创建方式: app.controller('CustomersController', function ($scope, customersService) {}); 及 显然,第二种方法更容易键入,但是使用这种方法比第一种方法有好处吗?通常这两种方法都可以工作,但是一旦代码缩小,只有第二种语法可以工作。大多数JavaScript迷你程序将重命名参数

我只是在学习AngularJS,我发现了很多不同的方法来做同样的事情,我真的很想知道哪一个更好,为什么选择一个而不是另一个

我看到了控制器的两种创建方式:

app.controller('CustomersController', function ($scope, customersService) {});


显然,第二种方法更容易键入,但是使用这种方法比第一种方法有好处吗?

通常这两种方法都可以工作,但是一旦代码缩小,只有第二种语法可以工作。大多数JavaScript迷你程序将重命名参数标识符,因此您的代码可能如下所示:

a.controller('CustomersController',function(b,c){});
a.controller('CustomersController',['$scope','customersService',function(b,c){}]);
如果发生这种情况,Angular将无法再确定需要注入哪些服务。但是,如果您使用数组语法,您将得到如下所示的精简代码:

a.controller('CustomersController',function(b,c){});
a.controller('CustomersController',['$scope','customersService',function(b,c){}]);

在本例中,数组的最后一个元素用作控制器函数,前面的所有元素都是表示服务名称的字符串。该列表有效地应用于控制器功能,每个服务由minifier选择的任意标识符标识。

通常两者都可以工作,但代码缩小后,只有第二种语法可以工作。大多数JavaScript迷你程序将重命名参数标识符,因此您的代码可能如下所示:

a.controller('CustomersController',function(b,c){});
a.controller('CustomersController',['$scope','customersService',function(b,c){}]);
如果发生这种情况,Angular将无法再确定需要注入哪些服务。但是,如果您使用数组语法,您将得到如下所示的精简代码:

a.controller('CustomersController',function(b,c){});
a.controller('CustomersController',['$scope','customersService',function(b,c){}]);

在本例中,数组的最后一个元素用作控制器函数,前面的所有元素都是表示服务名称的字符串。该列表有效地应用于控制器功能,每个服务由minifier选择的任意标识符标识。

使用第二种方法可以使用变量缩小代码。如果你不这样做:

['$scope', 'customersService', function ($scope, customersService) {}]

然后可以缩小变量,这将破坏应用程序。

使用第二种方法可以缩小带有变量的代码。如果你不这样做:

['$scope', 'customersService', function ($scope, customersService) {}]

然后可以缩小变量,这将破坏您的应用程序。

任何一个都可以,如果您计划缩小代码,建议使用第二个变量,因为第一个变量将缩小为类似以下内容:

app.controller('CustomersController', function (a, b) {});
由于依赖项注入的工作原理,这将不起作用,但第二个将变成:

app.controller('CustomersController', ['$scope', 'customersService', function (a, b) {}]);

angular内部知道为a放入$scope,为b放入CustomerService

任何一个都可以,如果您计划缩小代码,则建议使用第二个,因为第一个代码将缩小为:

app.controller('CustomersController', function (a, b) {});
由于依赖项注入的工作原理,这将不起作用,但第二个将变成:

app.controller('CustomersController', ['$scope', 'customersService', function (a, b) {}]);

angular内部知道为a放入$scope,为b放入CustomerService

这里有一个问题-在像第二个选项那样编写控制器之后,是否还需要编写代码
CustomersController.$inject=['$scope']
,或者只有第一个选项需要这样做?这里有一个问题-在像第二个选项那样编写控制器之后,是否还需要编写代码
CustomersController.$inject=['$scope']
,还是只有第一个选项需要这样做?