2016-07-27 3 views
2

저는 약 2 주간 앵귤러 2를 사용하고 있습니다. 한가지 예외를 제외하고는 ... 서비스를 좋아합니다. 그것들을 사용 했음에도 불구하고, 사회에 순응하기 위해, 나는 그 요점을 이해하지 못한다. 나는 그 추론을 설명 할 수 있기를 바란다.각도 2 서비스 ... 무의미한가요?

서비스는 데이터로드 이외에는 아무 것도하지 않습니다. 9/10을 언급하지 않기 위해 필자가 삽입 한 구성 요소에는 반환 된 데이터를 처리하고 사용 가능하도록 비슷한 함수가 있어야합니다. 내가 가진 또 다른 큰 문제는 오버 헤드입니다. (영웅 튜토리얼에 이어) 영웅의 목록을 생성하기 위해 (서비스를 사용하는) Ajax 요청을 실행하고 하나를 클릭하면 이제 id를받는 새 페이지를로드하고 동일한 서비스를 사용하는 다른 요청을 실행합니다. .

따라서 나는 이해하지 못한다. 데이터를 한 번만로드하면되고 완전히 새로운 요청을 수행하는 대신 쿼리 할 수있는 인스턴스처럼 만들지 않는 이유는 무엇입니까? 약속/관찰 가능 대신 실제 데이터를 반환하는 것은 말할 것도 없습니다. 어떤 사람이 이것을 설명하고 내가 무엇을 놓치고 있는지 말해 준다면 나는 그것을 좋아할 것입니다. 미리 감사드립니다.

답변

4

서비스는 비즈니스 관심사를 캡슐화하고 둘 모두를 관리하는 UI 관심사 또는 컨트롤러 관심사와 구분합니다.

서비스 기능에 중점을 둡니다. UI는 프리젠 테이션에 중점을 둡니다. 컨트롤러는 UI 및 서비스 상호 작용 관리에 중점을 둡니다.

이점은 유지 관리 가능성입니다. UI 로직과 비즈니스 로직을 분리하는 것은 UI 레이어와 Model 레이어 간의 결합을 줄이기 위해 개발, 테스트 및 유지 보수가 더 간편한보다 깨끗한 디자인을 제공하기위한 것입니다.

Angular2에서

:

class --> Controller 
injectable services --> Model 
component view template --> View 
+0

알았어. 알 겠어. 나는 HTML 코드 (예 : herodetails.component.ts)와 html을 데이터 바인딩 및 이벤트 핸들러를 처리하는 뷰 감각으로 간주했습니다. 하지만 내가 올바르게 이해한다면, 뒤에 숨겨진 코드는 컨트롤 레이어입니까? 구성 요소와 서비스간에 인스턴스를 생성해야합니까?그런 식으로 나는 동일한 데이터를 계속 가져올 필요가 없다. 또한 이것이 올바른 방법 일 경우 어떻게 그 사실을 입증하거나 이야기하지 않았을까요? (필자가 수행 한 검색 및 자습서 중 적어도 하나는 – ZaksBack

+0

) 데이터가 한 번 풀다운되도록하기 위해 따라야 할 다른 패턴이 있습니다. 데이터를 캐싱하는 싱글 톤 (singleton)으로서의 서비스, 또는 가입자에게 데이터를 재생하는 관찰 가능 (observable)을 사용한다. Angular2는 컴포넌트 모델에 대해 이야기하지만 imho, MVC입니다. – pixelbits

+0

이것은 관련이 있다고 생각합니다. http : //stackoverflow.com/questions/35762515/is-angular2-mvc – pixelbits

1

서비스가 필수적입니다 한 상황이있다; 부모 - 자식보다 더 깊은 트리에서 구성 요소간에 데이터를주고 받기를 원할 때.

예를 들어, 연락처 앱. 각 연락처가 구성 요소 (세 가지 수준) 및 주소 렌더링 (네 가지 수준), 전화 및 전자 메일 (네 번째 수준)에 표시되는 연락처 구성 요소 목록 (두 수준)이있는 페이지 구성 요소 (한 수준) 다시)는 구성 요소에 의해 처리됩니다. 자체 다중 레벨 트리로 연락처 편집을 위해 루트에서 다른 분기를 가질 수 있습니다. 복잡하고 깨지기 쉬운 컴포넌트 간 통신을 구조화하는 대신 서비스는 모든 구성 요소에 대한 데이터 가져 오기 및 저장을 단순화합니다.

서비스는 응용 프로그램 상태를 설정하고 읽는 방법을 제공 할 수 있습니다. ngrx/store 또는 관찰 가능한 기반 상태 시스템을 사용하는 몇 가지 패턴이 있습니다. 이것은 구성 요소를 사용하는 것이 거의 불가능합니다.

예제 앱은 과잉 공격 일지 모르지만 http 호출을 사용하여 목록을로드 한 다음 트랜잭션을 설명하는 복잡한 데이터 구조를로드하는 항목을 선택하는 패턴을 상상해보십시오. 선택 항목에만로드하려는 선택한 항목에 대해 많은 관계가 있습니다.

나의 짧은 경험으로는 매우 털이없고 복잡해질 수 있으며, 불필요한 것처럼 보이는 모든 것들은 매우 어려운 문제에 대한 대답입니다.