Estoy leyendo http://www.alexrothenberg.com/2013/02/11/the-magic-behind-angularjs-dependency-injection.html y resultó que la inyección de dependencia de angularjs tiene problemas si minimizas tu javascript, así que me pregunto si en lugar de
var MyController = function($scope, $http) {
$http.get('https://api.github.com/repos/angular/angular.js/commits')
.then(function(response) {
$scope.commits = response.data
})
}
Deberías 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
})
}]
en general, pensé que el segundo fragmento era para la versión anterior de angularjs, pero ...
¿Debería usar siempre la forma de inyección (la segunda)?
Es más seguro utilizar la segunda variante, pero también es posible utilizar la primera variante de forma segura con ngmin .
ACTUALIZACIÓN:
Ahora ng-annotate se convierte en una nueva herramienta predeterminada para resolver este problema.
fuente
Sí, debe utilizar la inyección de dependencia explícita (segunda variante). Pero desde Angular 1.3.1 puede desactivar la inyección de dependencia implícita , es realmente útil para resolver problemas potenciales con el cambio de nombre de una vez (antes de la minificación).
Desactivación de DI implícita, usando la
strictDi
propiedad de configuración:Desactivación de DI implícita, usando
ng-strict-di
directiva:fuente
Solo para señalar que si usa
Hacendado
no hay necesidad de hacer como
porque gruñido durante minify tenga en cuenta cómo administrar DI.
fuente
Como dijo OZ_, use ngmin para minimizar todos los archivos angulares js, como directive.js service.js. Después de eso, puede usar el compilador Closure para optimizarlo.
árbitro:
Cómo minificar los scripts de angularjs
Construye con YO
fuente
Es posible que desee utilizar
$inject
como se menciona aquí :fuente
Utilice la inyección de dependencia estricta para diagnosticar problemas
Con la anotación implícita , el código se romperá cuando se minimice.
De los Documentos:
Puede agregar una
ng-strict-di
directiva en el mismo elementong-app
para optar por el modo DI estricto.El modo estricto arroja un error cada vez que un servicio intenta utilizar anotaciones implícitas.
Esto puede resultar útil para determinar la búsqueda de problemas.
Para más información, ver
fuente