angular.module('myApp',[])
.controller('DemoController',['$rootScope','$scope','$http',function($rootScope,$scope,$http){
}])
angular.module('myApp',[])
.controller('DemoController',function($rootScope,$scope,$http){
})
Quelle est la différence entre ces deux-là ?
Après
function
, il n'y a aucune exigence de commande ou de quantité pour les paramètres transmis.La première méthode consiste à spécifier les variables transmises dans
.function
的变量用字符串'$rootScope','$scope','$http'
avec la chaîne'$rootScope','$scope','$http'
, et la deuxième méthode est simplement un simple nom de variableParce que l'outil de compression js le fera
function($rootScope,$scope,$http)
里的$rootScope,$scope,$http
混淆压缩掉, 比如换成了function(a,b,c)
.Une fois le code obscurci et compressé, angulaire ne sait pas dans quels paramètres (ou dépendances) sont transmis
function
, et il ne peut pas s'exécuter après avoir été importé et compressé.Il existe deux manières d'injection de dépendance angulaire :
La première est l'injection en ligne, la seconde est l'injection inférée (il existe également une injection explicite)
La différence est
Injection en ligne :
nous permet de partir de l'intérieur de la ligne lorsque la fonction est défini Pass dans les paramètres. De plus, cela évite l'utilisation de variables temporaires lors de la définition.
Injection inférentielle :
S'il n'y a pas de déclaration explicite, Angular supposera que le nom du paramètre est le nom de la dépendance, mais ce processus ne s'applique qu'au code non compressé et non obscurci, car Angular nécessite la liste de paramètres non compressée d'origine pour l'analyse. (Cependant, vous pouvez introduire gulp-ng-annotate dans le processus d'emballage pour convertir l'injection inférentielle en injection en ligne)
Il est recommandé de lire la méthode d'injection de dépendances angulaires