0

나는 약 DIDI in Angular.js을 읽었습니다.Angular.js - Javascript Dependency Injection

Angular.js의 DI는 Angular.js가 컨트롤러, 팩토리, 서비스 또는 기타에서 종속성을 만들 필요없이 종속성을 지정할 수 있음을 의미합니다.

질문은 : 어떤 점 의존성에서

  1. 은 내가 이것을 이해 어떻게 종속성이 사망하지 생성 된 곳으로 만들기, 생성되어야

    ?
  2. 내가있는 경우 :

    var thing = function(dep){ 
        this.dep = dep || new depCreator(); 
    } 
    

    이 사망입니까? 또는 함수에 dep이 전달되었는지 여부에 따라 다릅니다.

  3. 내가보기에 DI는 함수 나 객체에서 결국 의존성을 설정할 수 있음을 의미하지만 초기화/구성/데이터를 프로그램의 다른 부분 (논리 우리는)도 초기화 로직을 가질 수있다?

    var dep1 = 'qwe'; 
    var thing = function(dep){ this.dep = dep; } 
    var diedThing = new thing(dep1); 
    

    이 예를 들어, 구성 파일에 dep1을 설정할 수있다. DI를 구현하는 일반 자바 스크립트는

  4. 경우 :

    var thing = function(dep){ 
        this.dep = dep; 
    } 
    

    대신

    var thing = function(){ 
        this.dep = new depCreator(); 
    } 
    

    의이 권리인가?

    그러나 depCreator가 구성 파일 (또는 압축을 푼 구성)에 의존하면이 파일은 DIed가됩니까?

  5. DI가 Angular.js에 있음을 읽을 때,이 DI는 Angular.js가 나를 위해 의존성을 만들고 검색한다는 것을 의미한다고 생각하는 것이 맞습니까? 또 다른 의미가 있니?

  6. 마지막으로, DI가 너무 복잡하지만 구현 (또는 논리)에서 구성을 분리하는 것을 의미하는 이유는 무엇입니까? 즉, 메소드가 수행하는 것, 즉 구성이 구성 않습니다.

마지막으로, DI는 주관적인 개념으로, 일부 응용 프로그램에서 어떻게 책임을 분담하고 상상할 수 있습니까?

대단히 죄송합니다.

+0

일반적으로 'DI'는 '참조를 전달하면 개체에서 사용할 수있는 모든 메서드를 가져옵니다.'라는 멋진 이름입니다. 이는 대리자 패턴과 비슷합니다. – zsong

+0

DI의 종류는 단순히 함수의 형식 매개 변수를 의미있는 비 로컬 식별자로 사용하여 매개 변수 이름을 $ scope와 같은 공통 각도 객체의 속성과 비교합니다. 스니핑 된 모든 일치 항목은 함수를 호출하는 "apply() 배열"앞에 추가됩니다. – dandavis

답변

1
  1. 종속성이 생성되는 장소는 종속되지 않습니다. 유일한 목적은 대개 "물건"을 만들고 DI 하위 시스템에 등록하는 것입니다. 그것에 대해 이상하거나 의심스러운 것은 없습니다.

  2. 왜이 작업을 수행 하시겠습니까? 어쩌면 유연성을 더 필요로 할 때 객체를 생성하는 서비스에 의존 할 수도 있습니다.

  3. DI는 의존성 주입을 의미합니다. 정확히 말해서, 자신이 의존하는 것을 만들지는 마십시오. 대신 당신은 그것을 요구하고 짜증나게합니다. 그것은 당신에게 제공됩니다. 생성 방법, 생성자 등을 알 필요가 없습니다.

  4. depCreator가 설정 파일에 의존적이면 잘됩니다. 그것들을 사용할 수 있습니다. DI 서브 시스템에 dep를 등록하기 전에 그것은 무엇이든 할 수 있습니다. 이것이 바로 dep를 등록하고 앱의 다른 구성 요소에 사용할 수 있도록하는 서비스/팩토리 depCreator를 만드는 것입니다.

  5. 물음표가 없습니다. 각도 은 DI 서브 시스템을 가지고 있으며 실제로 각도의 핵심 아이디어 중 하나입니다. Angular는 즉시 사용할 수있는 많은 구성 요소를 주입 할 준비가되어 있으며 나머지는 스스로 작성하여 등록해야합니다.

  6. DI가 복잡한 지 여부를 알 수 없습니다. 어쩌면 구현하기 까다로운 일일 수도 있지만, 일단 사용법을 배우면 돌아가고 싶지 않을 것입니다. 각도의 DI가 내가 본 것 중 가장 사용하기 쉬운 것일 수도 있습니다. 그것은 매우 투명합니다. 잠시 후에 당신은 거기에있는 것을 알지도 못하고 작동합니다. 이므로입니다.

마지막 발언은 정확하다고 생각됩니다. 그것은 내가 보는 방식으로 우려의 분리에 관한 것입니다. 그러나 DI를 설명하는 많은 좋은 자원들이 많이 있습니다. 그래서 여기서 자세히 설명하지 않겠습니다. 늘 그렇듯이 자세한 각진 내용을 보려면 ng-book을 읽는 것이 좋습니다.