Ich lese http://www.alexrothenberg.com/2013/02/11/the-magic-behind-angularjs-dependency-injection.html und es stellte sich heraus, dass die Angularjs-Abhängigkeitsinjektion Probleme hat, wenn Sie Ihr Javascript minimieren, also ich Ich frage mich, ob statt
var MyController = function($scope, $http) {
$http.get('https://api.github.com/repos/angular/angular.js/commits')
.then(function(response) {
$scope.commits = response.data
})
}
du solltest benutzen
var MyController = ['$scope', '$http', function($scope, $http) {
$http.get('https://api.github.com/repos/angular/angular.js/commits')
.then(function(response) {
$scope.commits = response.data
})
}]
Alles in allem dachte ich, der zweite Ausschnitt sei für die alte Version von anglejs, aber ...
Sollte ich immer den Injektionsweg verwenden (den zweiten)?
Es ist sicherer, die zweite Variante zu verwenden, aber es ist auch möglich, die erste Variante sicher mit ngmin zu verwenden .
UPDATE:
Jetzt wird ng-annotate zu einem neuen Standardwerkzeug, um dieses Problem zu lösen.
quelle
Ja, Sie müssen eine explizite Abhängigkeitsinjektion verwenden (zweite Variante). Aber da Angular 1.3.1 können Sie implizite deaktivieren Dependency Injection, ist es wirklich hilfreich ist , um potenzielle Probleme zu lösen mit Umbenennung auf einmal (vor minification).
Deaktivieren der impliziten DI mithilfe der
strictDi
Eigenschaft config:Deaktivieren der impliziten DI mithilfe der
ng-strict-di
Direktive:quelle
Nur um darauf hinzuweisen, wenn Sie verwenden
Yeoman
es besteht keine Notwendigkeit zu mögen
weil Grunzen während der Minimierung berücksichtigen, wie DI zu verwalten ist.
quelle
Wie OZ_ sagte, verwenden Sie ngmin, um alle eckigen js-Dateien wie directive.js service.js zu minimieren. Danach können Sie den Closure-Compiler verwenden, um ihn zu optimieren.
ref:
So minimieren Sie AngularJS-Skripte
Bauen Sie mit YO
quelle
Vielleicht haben Sie verwenden möchten ,
$inject
wie es erwähnt hier :quelle
Verwenden Sie Strict Dependency Injection, um Probleme zu diagnostizieren
Mit der impliziten Anmerkung wird der Code beim Minimieren unterbrochen.
Aus den Dokumenten:
Sie können eine
ng-strict-di
Direktive für dasselbe Element hinzufügen, um denng-app
strengen DI-Modus zu aktivieren.Der strikte Modus löst einen Fehler aus, wenn ein Dienst versucht, implizite Anmerkungen zu verwenden.
Dies kann hilfreich sein, um Probleme zu finden.
Weitere Informationen finden Sie unter
quelle