angular.js - angularJS依赖注入的标准
大家讲道理
大家讲道理 2017-05-15 17:00:16
0
3
681

我在使用各大社区查关于angular的知识的时候,经常看到两种依赖注入的模式,有的是controller.('Ctr',[$scope,function($scope){...}]);
有的直接是controller.('Ctr',function($scope){...});
想请教一下后面这个是新的模式而且通用的吗?

大家讲道理
大家讲道理

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

membalas semua(3)
滿天的星座

Amalan terbaik ialah menggunakan: pengawal.('Ctr',['$skop',fungsi($skop){...}]).

  1. Seperti yang @Deboy katakan, untuk pemampatan js.

  2. Prestasi yang lebih baik. (controller.('Ctr',function($scope){...}), angularjs akan menghuraikan parameter fungsi ini dan akhirnya mendapatkan kandungan untuk disuntik, manakala kaedah penulisan gaya tatasusunan boleh melangkau langkah penghuraian , dan prestasi akan menjadi lebih baik). Dilampirkan kod sumber untuk rujukan:

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

Oleh kerana semasa proses pengoptimuman bahagian hadapan, js dan fail lain akan dimampatkan dan beberapa rentetan akan digantikan dengan huruf tunggal Jika ini berlaku, suntikan sudut tidak akan dihalang daripada dimampatkan Tidak boleh disuntik. Yang sebelumnya diproses supaya walaupun dimampatkan, ia tidak akan menyebabkan kegagalan suntikan

Kesan kedua-dua pelaksanaan dalam fasa pembangunan adalah sama

曾经蜡笔没有小新

Tiada spesifikasi/standard untuk bercakap tentang pelaksanaan suntikan kebergantungan

angular, tetapi ia adalah idea yang baik.
Saya telah menulis tutorial sebelum ini untuk mengajar anda menulis sistem suntikan kebergantungan yang serupa dengan angular Saya harap ia berguna kepada anda: Suntikan ketergantungan tulisan tangan BDD

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan