La modalità DI rigorosa genera fondamentalmente errori quando, in fase di esecuzione, viene rilevato un pezzo di codice non conforme alla minificazione; ma nota che il codice potrebbe essere corretto e senza errori logico-sintattici.
Citando la documentazione:
se questo attributo è presente sull'elemento app, l'iniettore verrà creato nella modalità "stretta-di". Ciò significa che l'applicazione non riuscirà a richiamare funzioni che non usano l'annotazione funzione esplicita (e quindi non sono adatte per la minificazione), come descritto nella guida Dipendenza iniezione e utili informazioni di debug aiuteranno a rintracciare la radice di questi bug .
Per esempio, questo codice genera un errore perché ($scope, $http, $filter)
non sono esplicitamente iniettato usando $inject
o dando al metodo .controller(A,B)
una matrice come secondo campo.
angular.module("myApp", [])
// BadController cannot be invoked, because
// the dependencies to be injected are not
// explicitly listed.
.controller("BadController", function($scope, $http, $filter) {
// ...
});
frammento di destra:
angular.module("myApp", [])
.controller("GoodController1", GoodController1);
GoodController1.$inject = ["$scope", "$http", "$filter"];
function GoodController1($scope, $http, $filter){}
o:
angular.module("myApp", [])
.controller("GoodController1",
["$scope", "$http", "$filter", function ($scope, $http, $filter){
//...
}]);
per rispondere alla tua domanda non v'è alcun miglioramento significativo delle prestazioni usandolo. Ti concede solo la sicurezza dell'errore di minimificabilità. Questo perché la minificazione modifica i nomi delle variabili infrangendo il codice quando ad esempio si utilizza $scope
senza un'annotazione esplicita.
Credo che uno dei principali vantaggi sia che il codice non-strict-di non può essere minimizzato, poiché si basa sull'ispezione dei nomi delle variabili in fase di runtime. – CollinD
Che strumenti di costruzione stai usando? –
@OlaviSau Sto usando gulp-ng-annotate e gulp-uglify come i miei strumenti di costruzione – user1995781