AngularJS Creazione di controllori, Minificazione sicura


Esempio

Ci sono un paio di modi diversi per proteggere la creazione del tuo controller da minification.

Il primo è chiamato annotazione array in linea. Sembra il seguente:

var app = angular.module('app');
app.controller('sampleController', ['$scope', '$http', function(a, b){
    //logic here
}]);

Il secondo parametro del metodo controller può accettare una matrice di dipendenze. Come puoi vedere, ho definito $scope e $http che dovrebbero corrispondere ai parametri della funzione controller in cui a sarà $scope , e b sarebbe $http . Prendi nota che l'ultimo elemento dell'array dovrebbe essere la funzione del tuo controller.

La seconda opzione utilizza la proprietà $inject . Sembra il seguente:

var app = angular.module('app');
app.controller('sampleController', sampleController);
sampleController.$inject = ['$scope', '$http'];
function sampleController(a, b) {
    //logic here
}

Questo fa la stessa cosa dell'annotazione dell'array inline ma offre uno stile diverso per quelli che preferiscono un'opzione all'altra.

L'ordine delle dipendenze iniettate è importante

Quando si iniettano dipendenze utilizzando il modulo matrice, assicurarsi che l'elenco delle dipendenze corrisponda al corrispondente elenco di argomenti passati alla funzione controller.

Si noti che nell'esempio seguente, $scope e $http sono invertiti. Ciò causerà un problema nel codice.

// Intentional Bug: injected dependencies are reversed which will cause a problem
app.controller('sampleController', ['$scope', '$http',function($http, $scope) {
    $http.get('sample.json');
}]);