Change Detection
Zone.js, change detection 전략, OnPush 전략, ChangeDetectorRef, markForCheck, detectChanges, 성능 최적화
1Angular의 change detection 메커니즘이란 무엇입니까?
Angular의 change detection 메커니즘이란 무엇입니까?
답변
Change detection은 Angular가 애플리케이션 상태의 변경을 감지하고 그에 따라 DOM을 업데이트하는 프로세스입니다. 기본적으로 Angular는 Zone.js를 사용하여 비동기 이벤트(clicks, HTTP requests, timers)를 자동으로 감지하고 루트부터 컴포넌트 검사를 트리거합니다. 이 검사는 컴포넌트 트리를 순회하여 DOM에 적용할 수정 사항을 식별합니다.
2Angular change detection에서 Zone.js의 역할은 무엇입니까?
Angular change detection에서 Zone.js의 역할은 무엇입니까?
답변
Zone.js는 브라우저의 네이티브 비동기 API(setTimeout, Promise, addEventListener 등)에 패치를 적용하여 실행을 가로채는 라이브러리입니다. 비동기 작업이 완료되면 Zone.js가 Angular에 알리고, Angular는 루트 컴포넌트에서 자동으로 change detection을 트리거합니다. 이를 통해 Angular는 개발자의 수동 개입 없이 변경 사항을 감지할 수 있습니다.
3Default 전략과 OnPush 전략의 차이점은 무엇입니까?
Default 전략과 OnPush 전략의 차이점은 무엇입니까?
답변
Default 전략은 모든 change detection 사이클에서 트리의 모든 컴포넌트를 검사하므로 비용이 많이 들 수 있습니다. OnPush는 input이 변경되거나(불변 참조), 템플릿에서 이벤트가 발생하거나, async pipe가 새 값을 받거나, markForCheck()가 수동으로 호출될 때만 컴포넌트를 검사하여 최적화합니다. OnPush는 검사 횟수를 크게 줄이고 성능을 향상시킵니다.
컴포넌트에서 OnPush 전략을 활성화하는 방법은?
Angular 컴포넌트에서 ChangeDetectorRef의 목적은 무엇입니까?
+17 면접 질문