angulaire.js - Le standard pour l'injection de dépendances dans AngularJS
大家讲道理
大家讲道理 2017-05-15 17:00:16
0
3
690

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 ?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(3)
滿天的星座

La meilleure pratique est d'utiliser : contrôleur.('Ctr',['$scope',function($scope){...}]).

  1. Comme @Deboy l'a dit, pour la compression js.

  2. 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;
}
Peter_Zhu

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

曾经蜡笔没有小新

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

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal