Estou lendo http://www.alexrothenberg.com/2013/02/11/the-magic-behind-angularjs-dependency-injection.html e descobri que a injeção de dependência angularjs tem problemas se você minimizar seu javascript, então eu estou me perguntando se em vez de
var MyController = function($scope, $http) {
$http.get('https://api.github.com/repos/angular/angular.js/commits')
.then(function(response) {
$scope.commits = response.data
})
}
você deveria usar
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
})
}]
Resumindo, pensei que o segundo fragmento fosse para a versão antiga do angularjs, mas ....
Devo usar sempre a via injetável (a segunda)?
fonte
É mais seguro usar a segunda variante, mas também é possível usar a primeira variante com segurança com o ngmin .
ATUALIZAÇÃO:
Agora o ng-annotate se torna uma nova ferramenta padrão para resolver esse problema.
fonte
Sim, você precisa usar injeção de dependência explícita (segunda variante). Mas, como o Angular 1.3.1 você pode desligar a injeção de dependência implícita , é realmente útil resolver problemas em potencial com renomeação de uma vez (antes da minificação).
Desligando o DI implícito, usando a
strictDi
propriedade config:Desligando o DI implícito, usando a
ng-strict-di
diretiva:fonte
Apenas para apontar que se você usar
Yeoman
não há necessidade de fazer gosto
porque o grunhido durante o minify leva em consideração como gerenciar o DI.
fonte
Como OZ_ disse, Use o ngmin para minificar todos os arquivos js angular, como diretiva.js service.js. Depois disso, você pode usar o compilador Closure para otimizá-lo.
ref:
Como minimizar scripts do angularjs
Construir com YO
fonte
Você pode querer usar
$inject
como mencionado aqui :fonte
Use injeção de dependência estrita para diagnosticar problemas
Com a anotação implícita , o código será interrompido quando reduzido.
Do Docs:
Você pode adicionar uma
ng-strict-di
diretiva no mesmo elementong-app
para optar pelo modo DI estrito.O modo estrito gera um erro sempre que um serviço tenta usar anotações implícitas.
Isso pode ser útil para determinar a localização de problemas.
Para mais informações, veja
fonte