Angularjs minifier les meilleures pratiques
Je suis en train de lire http://www.alexrothenberg.com/2013/02/11/the-magic-behind-angularjs-dependency-injection.html et
il s'est avéré que angularjs l'injection de dépendance a des problèmes si vous rapetisser votre javascript
alors je me demandais si au lieu de
var MyController = function($scope, $http) {
$http.get('https://api.github.com/repos/angular/angular.js/commits')
.then(function(response) {
$scope.commits = response.data
})
}
vous devez utiliser
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
})
}]
dans l'ensemble je pensais que le deuxième extrait de code a été pour l'ancienne version de angularjs, mais ....
Dois-je toujours utiliser l'injecter façon (le deuxième) ?
Vous devez vous connecter pour publier un commentaire.
Oui, toujours! Ainsi, de cette façon, même si votre minifer convertit $portée de la variable a et $http pour la variable b, leur identité est encore préservée dans les cordes.
Voir cette page de AngularJS docs, faites défiler vers le bas pour Une Note sur la Minification.
Mise à JOUR
Alternativement, vous pouvez utiliser ng-annoter mnp paquet dans votre processus de build pour éviter cette verbosité.
Il est plus sûr d'utiliser la deuxième variante, mais il est également possible d'utiliser la première variante en toute sécurité avec ngmin.
Mise à JOUR:
Maintenant ng-annoter devient un nouvel outil par défaut pour résoudre ce problème.
Oui, vous avez besoin d'utiliser explicite l'injection de dépendance (seconde variante). Mais depuis Angulaire 1.3.1 vous pouvez désactiver implicite l'injection de dépendance, il est vraiment utile pour résoudre les problèmes potentiels avec le renommage à la fois (avant de minification).
Éteindre implicite DI, à l'aide de
strictDi
config propriété:Éteindre implicite DI, à l'aide de
ng-strict-di
directive:Juste pour signaler que si vous utilisez
Yeoman
il n'y a pas besoin de faire comme
parce que grunt au cours de rapetisser prendre en compte la façon de gérer DI.
Comme OZ_ dit, l'Utilisation des ngmin minifier tous angular js fichiers, comme directive.js service.js. Après cela, vous pouvez utiliser le compilateur de Fermeture de l'optimiser.
ref:
Comment minifier angularjs scripts
Construire avec YO
Vous pouvez utiliser
$inject
comme il est mentionné ici:L'utilisation Stricte d'Injection de Dépendance pour Diagnostiquer les Problèmes
Avec Implicite D'Annotation, code de pause quand minimisé.
De la documentation:
Vous pouvez ajouter un
ng-strict-di
la directive sur le même élément queng-app
d'opter pour une stricte DI mode.Mode Strict lève une erreur à chaque fois qu'un service à la tente d'utiliser implicite annotations.
Cela peut être utile pour la détermination de la recherche des problèmes.
Pour plus d'informations, voir