Annotation Order:
It's considered good practice to dependency inject Angular's providers in before our own custom ones.
Bad:
// randomly ordered dependenciesfunction SomeCtrl (MyService, $scope, AnotherService, $rootScope) {}
Good:
// ordered Angular -> customfunction SomeCtrl ($scope, $rootScope, MyService, AnotherService) {}
Minification methods, automate it
Use ng-annotate
for automated dependency injection annotation, as ng-min
is .
With our function declarations outside of the module references, we need to use the @ngInject
comment to explicitly tell ng-annotate
where to inject our dependencies. This method uses $inject
which is faster than the Array syntax.
Manually specifiying the dependency injection arrays costs too much time.
Bad:
function SomeService ($scope) {}// manually declaring is time wastingSomeService.$inject = ['$scope'];angular .module('app') .factory('SomeService', SomeService);
Good:
// Using the ng-annotate keyword @ngInject to instruct things that need annotating:/** * @ngInject */function SomeService ($scope) {}angular .module('app') .factory('SomeService', SomeService);
Will produce:
/** * @ngInject */function SomeService ($scope) {}// automatedSomeService.$inject = ['$scope'];angular .module('app') .factory('SomeService', SomeService);