angular.js - Standard untuk suntikan pergantungan dalam angularJS
大家讲道理
大家讲道理 2017-05-15 17:00:16
0
3
694

Apabila saya menggunakan komuniti utama untuk menyemak pengetahuan tentang Angular, saya sering melihat dua mod suntikan pergantungan, beberapa daripadanya ialah pengawal.('Ctr',[$scope,function($scope){...}] ) ;
Sesetengahnya adalah pengawal langsung.('Ctr',function($scope){...});
Saya ingin bertanya sama ada mod yang terakhir ini baharu dan universal?

大家讲道理
大家讲道理

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

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