앵귤러js 의존성 주입(Dependency Injection) 이란?

J._NA 개발일지·2024년 5월 9일

AngularJS의 의존성 주입(Dependency Injection)

  • 컴퓨터 프로그래밍에서 소프트웨어 컴포넌트 간의 의존 관계를 정의 및 관리하는 디자인 패턴
  • Angular JS에서 의존성 주입은 컴포넌트 간의 의존 관계를 명시적으로 선언, 이를 통해 의존하는 객체를 제공하는 것을 말함

AngularJS의 의존성 주입(Dependency Injection) 장점

  • 코드의 유연성 : 의존성 주입을 통해 컴포넌트 간의 결합도를 줄일 수 있음. (유지보수가 용이)
  • 재사용 : 의존성 주입을 사용하면 여러 컴포넌트에서 동일한 종속성을 공유할 수 있음. ( 재상용성 용이).
  • 테스트 용이성 : 의존성 주입을 통해 컴포넌트를 단위 테스트하는 것이 쉬움. 모의 개체를 사용하여 의존성을 대체하거나 주입할 수 있으므로 컴포넌트를 격리된 환경에서 테스트 할 수 있음

요약하자면, AngularJS 에서는 의존성 주입이 프레임워크의 핵심 기능 중 하나.
컨트롤러, 서비스, 디텍티브 등의 AngularJS 컴포넌트는 의존성 주입을 통해 필요한 다른 컴포넌트를 요청하고 이를 사용할 수 있음. 이를 통해 AngularJS애플리케이션을 모듈화하고 확장 가능한 구조를 가질 수 있음

AngularJS에서 의존성 주입을 사용하는 간단한 예시 코드와 파일 구조를 제공

MainController 컨트롤러가 GreetingService 서비스에 의존합니다. 이를 가능하게 하려면 scopeGreetingService를컨트롤러의매개변수로선언해야합니다.그리고이러한의존성을주입할때문자열배열로의존성을주입할서비스의이름을지정합니다.이예시에서MainController,[scope 및 GreetingService를 컨트롤러의 매개변수로 선언해야 합니다. 그리고 이러한 의존성을 주입할 때 문자열 배열로 의존성을 주입할 서비스의 이름을 지정합니다. 이 예시에서는 'MainController', '['scope', 'GreetingService', ...]'와 같은 방식으로 의존성을 주입하고 있습니다.

매개변수가 필요할 때 VS 필요하지 않을 때

첫 번째 경우에서는 DataService 서비스가 MainController에 의존하고 있으며, 이 의존성을 주입하기 위해 매개변수를 사용합니다. 반면에 두 번째 경우에서는 MainController가 직접 데이터를 생성하고 있으므로 매개변수가 필요하지 않음

-> 개인적인 메모
매개변수가 필요한 이유는 결국 데이터값을 잘 주고 받기 위함이고, 코드의 유연성, 유지보수, 재사용성가능하게 하는 것임.
react를 따지면 컴포넌트화 해서 페이지를 전체 랜더링하는 것이 아니라 그부분만 바뀔수 잇게 하는 것처럼, 둘다 결국 '편의성'으로 하는 것임.

profile
아밥 & 프론트엔드 개발자

0개의 댓글