Angularjs minimiza as melhores práticas

Estou lendo http://www.alexrothenberg.com/2013/02/11/the-magic-behind-angularjs-dependency-injection.html e descobriu-se que injeção de dependência angularjs tem problemas se você diminuir o seu javascript para que eu estou querendo saber se em vez de

var MyController = function($scope, $http) { $http.get('https://api.github.com/repos/angular/angular.js/commits') .success(function(commits) { $scope.commits = commits }) } 

você deveria usar

 var MyController = ['$scope', '$http', function($scope, $http) { $http.get('https://api.github.com/repos/angular/angular.js/commits') .success(function(commits) { $scope.commits = commits }) }] 

Tudo em tudo eu pensei que o segundo trecho foi para a versão antiga do angularjs, mas ….

Devo sempre usar o injetar (o segundo)?

Sim , sempre! Portanto, mesmo que seu minifer converta $ scope para a variável ae $ http para a variável b, sua identidade ainda será preservada nas strings.

Veja esta página de documentos do AngularJS, role para baixo até A Note on Minification .

ATUALIZAR

Alternativamente, você pode usar o pacote ng-annotate npm em seu processo de construção para evitar essa verbosidade.

É mais seguro usar a segunda variante, mas também é possível usar a primeira variante com segurança com ngmin .

ATUALIZAR:
Agora o ng-annotate se torna uma nova ferramenta padrão para resolver esse problema.

Apenas para salientar que, se você usar

Yeoman

não há necessidade de fazer como

 var MyController = ['$scope', '$http', function($scope, $http) { $http.get('https://api.github.com/repos/angular/angular.js/commits') .success(function(commits) { $scope.commits = commits }) }] 

porque o grunhido durante o minify leva em conta como gerenciar o DI.

Sim, você precisa usar a injeção de dependência explícita (segunda variante). Mas como o Angular 1.3.1 você pode desativar a injeção de dependência implícita , é realmente útil resolver problemas potenciais com a renomeação de uma vez (antes da minificação).

Desativando o DI implícito, usando a propriedade de configuração strictDi :

 angular.bootstrap(document, ['myApp'], { strictDi: true }); 

Desligando o DI implícito, usando a diretiva ng-strict-di :

  

Como o OZ_ disse, use ngmin para minimizar todos os arquivos js angulares, como directive.js service.js. Depois disso, você pode usar o compilador Closure para otimizá-lo.

ref:

Como minify scripts angularjs

Construa com YO

Você pode querer usar $inject como mencionado aqui :

 MyController.$inject = ['$scope', '$http']; function MyController($scope, $http) { $http.get('https://api.github.com/repos/angular/angular.js/commits') .success(function(commits) { $scope.commits = commits }) }