Maison > Questions et réponses > le corps du texte
Lorsque j'utilise des communautés majeures pour vérifier mes connaissances sur Angular, je vois souvent deux modes d'injection de dépendances, dont certains sont des contrôleurs.('Ctr',[$scope,function($scope){...}] ) ;
Certains sont directement contrôleur.('Ctr',function($scope){...});
Je voudrais demander si ce dernier mode est un nouveau mode et est universel ?
滿天的星座2017-05-15 17:02:16
La meilleure pratique est d'utiliser : contrôleur.('Ctr',['$scope',function($scope){...}]).
Comme @Deboy l'a dit, pour la compression js.
Meilleures performances. (controller.('Ctr',function($scope){...}), angulairejs analysera les paramètres de cette fonction et obtiendra enfin le contenu à injecter, tandis que la méthode d'écriture de style tableau peut ignorer l'étape d'analyse , et les performances seront meilleures). Ci-joint le code source pour référence :
function annotate(fn, strictDi, name) {
var $inject,
fnText,
argDecl,
last;
if (typeof fn === 'function') {
if (!($inject = fn.$inject)) {
$inject = [];
if (fn.length) {
if (strictDi) {
if (!isString(name) || !name) {
name = fn.name || anonFn(fn);
}
throw $injectorMinErr('strictdi',
'{0} is not using explicit annotation and cannot be invoked in strict mode', name);
}
fnText = fn.toString().replace(STRIP_COMMENTS, '');
argDecl = fnText.match(FN_ARGS);
forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) {
arg.replace(FN_ARG, function(all, underscore, name) {
$inject.push(name);
});
});
}
fn.$inject = $inject;
}
} else if (isArray(fn)) {
last = fn.length - 1;
assertArgFn(fn[last], 'fn');
$inject = fn.slice(0, last);
} else {
assertArgFn(fn, 'fn', true);
}
return $inject;
}
天蓬老师2017-05-15 17:02:16
Parce que pendant le processus d'optimisation front-end, les fichiers js et autres seront compressés et certaines chaînes seront remplacées par des lettres simples. Si tel est le cas, l'injection angulaire échouera et cette dernière ne sera pas empêchée d'être compressée. ne peut pas être injecté. Le précédent est traité de manière à ce que même s'il est compressé, il ne provoquera pas d'échec d'injection
Les effets des deux exécutions en phase de développement sont les mêmes
曾经蜡笔没有小新2017-05-15 17:02:16
La méthode d'implémentation d'injection de dépendances de
angular
n'a pas de spécifications/normes à aborder, mais c'est une bonne idée.
J'ai déjà écrit un tutoriel pour vous apprendre à écrire à la main un système d'injection de dépendances similaire à angular
J'espère qu'il vous sera utile : l'injection de dépendances manuscrite BDD