웹 프론트엔드 JS 튜토리얼 AngularJS 종속성 주입 원칙에 대한 심층 분석

AngularJS 종속성 주입 원칙에 대한 심층 분석

Mar 28, 2018 pm 03:06 PM
angularjs 의존성 주입

이 기사는 주로 AngularJS 종속성 주입 원리에 대한 심층 분석을 공유하며 좋은 참고 가치가 있으며 모든 사람에게 도움이 되기를 바랍니다. 편집자를 따라가서 살펴보겠습니다.

종속성 주입: 종속성 주입 약어DI

예:

var xiaomi = new Xiaomi();     // 假设小米公司生产了一台xiaomi手机
createShipment(xiaomi);         //此方法能把货送给顾客,这叫做把小米手机注入到createShipment()方法
로그인 후 복사

createShipment() 메소드에 (휴대폰)이 필요하다고 가정합니다. , 특급 배송 회사, 주문 세부 정보) 세 가지 매개 변수가 필요합니다.

var xiaomi = new Xiaomi();     // 不仅要生产手机
var shipCompany = new ShipCompany();   // 还要自己建立个快递公司
var order = new Order();      // 还要自己建立线上线下平台做订单
createShipmentxiaomi,shipCompany,order);   // 虽然小米已经这么干了,但还是很累的
로그인 후 복사

위의 예에서 Xiaomi는 자체 매장에서 판매하는 것 외에 다른 채널이 없나요? 휴대폰도 만들어야 하고, 업무도 처리해야 하고, 택배도 해야 하니 피곤하지 않으신가요? Xiaomi는 자체적으로 이를 수행하는 것 외에도 Taobao, JD.com, Suning 및 기타 플랫폼에서 판매할 수 있으며 Santong Yishun과 같은 특송 회사를 사용하여 상품을 배송할 수도 있습니다. 이는 종속성 주입이 해결해야 할 문제입니다. Taobao, JD.com, SF Express 및 기타 회사를 이용하는 것은 판매 서비스(sellService), 특급 배송 서비스(sendService) 등을 Xiaomi에 주입하는 것입니다!

제어 반전: 제어 반전 약어IOC

IOC은 종속성 제어를 코드 내부에서 코드 내부로 전송하는 것을 의미합니다. 예를 들어, 샤오미는 외부인에게 휴대폰을 판매하고 배달할 수 있는 권한을 부여했습니다. 타오바오가 팔든, JD.com이 팔든, YTO가 배달하든, SF 익스프레스가 배달하든, 샤오미는 이것들만 걱정할 필요가 없습니다. 휴대폰. 전문적인 문제는 전문가에게 맡기세요.

IOC은 느슨한 결합 모드이며 구현 수단은 종속성 주입입니다.

인젝터:

constructor(privatesomeService : SomeService) {...}

이 문장은 이 구성 요소가 someService 속성을 선언하여 해당 유형이 SomeService임을 나타내고 angular가 공급자에게 가서 SomeService을 찾기 위해 , 그런 다음 이 인스턴스를 someService에 삽입합니다.

提供器:

providers:[{provide:SomeService,useClass:SomeService}]

providers:[SomeService]//provideuseClass相同可简写为这个

例:

app.module.ts

@NgModule({  
    providers:[{provide:SellService,useClass:ShunfengService}],             // 这个是淘宝,用的顺丰
      // providers: [{provide:SellService,useClass:YuantongService}]          // 这个是京东,用的圆通})
product.component.ts
@Component({  ...
})
     export class ProductComponent implements OnInit {  product: Product;  constructor(sellService: SellService) {
        this.product = this.sellService.sendProduct();
  }}
로그인 후 복사

上面的代码怎么理解呢?

小米声明sellService对象(也是属性),叫sellService去卖手机,sellService呼叫售卖服务,这个服务是SellService类型的(线上销售),那么angular就会去提供器里面找谁在提供这个售卖服务,至于是淘宝还是京东那要看提供器里面的,用的哪个快递公司就更加不需要小米公司来管了。angular找到SellService之后会new一个ShunfengService的一个实例(找一家顺丰门店),找到之后把服务注入给小米公司的sellServicesellService就跑到那家顺丰门店填送货单(sendProduct方法)把手机送给客户了。

各位看官应该能想出更好的比喻,欢迎交流。如果有不妥之处欢迎指正。

相关推荐:

AngularJS 依赖注入解析

AngularJS中的依赖注入

30行代码让你理解angular依赖注入:angular 依赖注入原理

위 내용은 AngularJS 종속성 주입 원칙에 대한 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Angular의 종속성 주입을 이해하기 위한 단계별 가이드 Angular의 종속성 주입을 이해하기 위한 단계별 가이드 Dec 02, 2022 pm 09:14 PM

이 글은 여러분에게 의존성 주입을 소개하고, 의존성 주입이 해결하는 문제와 그 기본 작성 방법을 소개하고, Angular의 의존성 주입 프레임워크에 대해 이야기할 것입니다. 여러분에게 도움이 되기를 바랍니다.

Phalcon 프레임워크에서 종속성 주입(Dependency Injection)을 사용하는 방법 Phalcon 프레임워크에서 종속성 주입(Dependency Injection)을 사용하는 방법 Jul 30, 2023 pm 09:03 PM

Phalcon 프레임워크에서 종속성 주입(DependencyInjection)을 사용하는 방법 소개: 현대 소프트웨어 개발에서 종속성 주입(DependencyInjection)은 코드의 유지 관리성과 테스트 가능성을 향상시키는 것을 목표로 하는 일반적인 디자인 패턴입니다. 빠르고 저렴한 PHP 프레임워크인 Phalcon 프레임워크는 종속성 주입을 사용하여 애플리케이션 종속성을 관리하고 구성하는 기능도 지원합니다. 이 글에서는 Phalcon 프레임워크를 사용하는 방법을 소개합니다.

입문부터 숙달까지, 2022년 최신 5개 Anglejs 튜토리얼 입문부터 숙달까지, 2022년 최신 5개 Anglejs 튜토리얼 Jun 15, 2017 pm 05:50 PM

자바스크립트는 코드의 구성, 코드의 프로그래밍 패러다임, 객체지향 이론 측면에서 매우 독특한 언어입니다. 하지만 20년 동안 Javascript가 지배했음에도 불구하고 jQuery, Angularjs, 심지어 React와 같은 인기 프레임워크를 이해하려면 "Black Horse Cloud Classroom JavaScript Advanced Framework"를 시청하세요. 디자인 비디오 튜토리얼'을 참조하세요.

Golang 함수 매개변수 전달 시 종속성 주입 패턴 Golang 함수 매개변수 전달 시 종속성 주입 패턴 Apr 14, 2024 am 10:15 AM

Go에서 DI(종속성 주입) 모드는 값 전달 및 포인터 전달을 포함한 함수 매개변수 전달을 통해 구현됩니다. DI 패턴에서 종속성은 일반적으로 디커플링을 개선하고 잠금 경합을 줄이며 테스트 가능성을 지원하기 위해 포인터로 전달됩니다. 포인터를 사용하면 함수는 인터페이스 유형에만 의존하기 때문에 구체적인 구현에서 분리됩니다. 또한 포인터 전달은 큰 개체 전달에 따른 오버헤드를 줄여 잠금 경합을 줄입니다. 또한 DI 패턴을 사용하면 종속성을 쉽게 모의할 수 있으므로 DI 패턴을 사용하는 함수에 대한 단위 테스트를 쉽게 작성할 수 있습니다.

JUnit 단위 테스트 프레임워크를 사용한 종속성 주입 JUnit 단위 테스트 프레임워크를 사용한 종속성 주입 Apr 19, 2024 am 08:42 AM

JUnit을 사용하여 종속성 주입을 테스트하는 경우 요약은 다음과 같습니다. 모의 개체를 사용하여 종속성 생성: @Mock 주석은 종속성의 모의 개체를 생성할 수 있습니다. 테스트 데이터 설정: @Before 메서드는 각 테스트 메서드 이전에 실행되며 테스트 데이터를 설정하는 데 사용됩니다. 모의 동작 구성: Mockito.when() 메서드는 모의 객체의 예상 동작을 구성합니다. 결과 확인: AssertEquals()는 실제 결과가 예상 값과 일치하는지 확인하기 위해 어설션합니다. 실제 적용: 종속성 주입 프레임워크(예: Spring Framework)를 사용하여 종속성을 주입하고 JUnit 단위 테스트를 통해 주입의 정확성과 코드의 정상적인 작동을 확인할 수 있습니다.

PHP와 AngularJS를 사용하여 반응형 웹사이트를 구축하여 고품질 사용자 경험 제공 PHP와 AngularJS를 사용하여 반응형 웹사이트를 구축하여 고품질 사용자 경험 제공 Jun 27, 2023 pm 07:37 PM

오늘날의 정보화 시대에 웹사이트는 사람들이 정보를 얻고 소통하는 중요한 도구가 되었습니다. 반응형 웹사이트는 다양한 기기에 적응하고 사용자에게 고품질 경험을 제공할 수 있으며, 이는 현대 웹사이트 개발에서 핫스팟이 되었습니다. 이 기사에서는 PHP와 AngularJS를 사용하여 고품질 사용자 경험을 제공하는 반응형 웹사이트를 구축하는 방법을 소개합니다. PHP 소개 PHP는 웹 개발에 이상적인 오픈 소스 서버측 프로그래밍 언어입니다. PHP는 배우기 쉬움, 크로스 플랫폼, 풍부한 도구 라이브러리, 개발 효율성 등 많은 장점을 가지고 있습니다.

Go 언어: 의존성 주입 가이드 Go 언어: 의존성 주입 가이드 Apr 07, 2024 pm 12:33 PM

답변: Go 언어에서는 인터페이스와 구조를 통해 종속성 주입을 구현할 수 있습니다. 종속성 동작을 설명하는 인터페이스를 정의합니다. 이 인터페이스를 구현하는 구조를 만듭니다. 인터페이스를 통해 함수의 매개변수로 종속성을 주입합니다. 테스트 또는 다양한 시나리오에서 종속성을 쉽게 교체할 수 있습니다.

PHP 함수에 대한 종속성 주입 및 서비스 컨테이너 PHP 함수에 대한 종속성 주입 및 서비스 컨테이너 Apr 27, 2024 pm 01:39 PM

답변: PHP의 종속성 주입 및 서비스 컨테이너는 종속성을 유연하게 관리하고 코드 테스트 가능성을 향상시키는 데 도움이 됩니다. 종속성 주입: 컨테이너를 통해 종속성을 전달하여 함수 내에서 직접 생성을 방지하여 유연성을 향상시킵니다. 서비스 컨테이너: 프로그램에서 쉽게 액세스할 수 있도록 종속성 인스턴스를 저장하여 느슨한 결합을 더욱 향상시킵니다. 실제 사례: 샘플 애플리케이션은 종속성 주입 및 서비스 컨테이너의 실제 적용을 보여주며 느슨한 결합의 장점을 반영하여 컨트롤러에 종속성을 주입합니다.

See all articles