앵귤러는 기본적으로 변화 감지(Change Detection)를 통해 UI를 업데이트합니다. 이것은 애플리케이션의 성능에 영향을 미칠 수 있기 때문에 변경 검사 전략을 잘 이해하고 적절하게 사용하는 것이 중요합니다.
변경 검사란 무엇인가요?
변경 검사는 프레임워크가 컴포넌트와 바인딩된 데이터를 주기적으로 감시하여 변화가 있는지 감지하는 프로세스입니다. 변화가 감지되면 해당 컴포넌트의 뷰를 업데이트합니다.
기본 변경 검사 전략
앵귤러에서 기본적으로 사용되는 변경 검사 전략은 Zone.js를 기반으로 한 NgZone를 사용하는 것입니다. 이 전략은 컴포넌트와 그 하위 컴포넌트의 전체 트리를 확인하고 모든 데이터 바인딩을 확인하여 변경이 있을 경우 UI를 업데이트합니다.
OnPush 전략
OnPush 변경 검사 전략은 부모 컴포넌트에서 입력 속성이 변경된 경우 또는 명시적인 이벤트 핸들러가 호출된 경우에만 변경 검사가 실행됩니다. 이는 컴포넌트의 상태가 변하지 않는 한 변경 검사를 하지 않음으로써 성능을 최적화하는데 도움이 됩니다.
예를 들어, ChangeDetectionStrategy.OnPush를 설정한 컴포넌트 내부에서 상태 변경이 없다면 해당 컴포넌트는 변경 검사를 수행하지 않습니다. 따라서 해당 컴포넌트가 상태 변화 없는 경우에는 변화 감지가 일어나지 않아 성능 향상에 도움이 됩니다.
언제 어떤 변경 검사 전략을 사용해야 하나요?
OnPush 전략은 컴포넌트의 상태가 변경되지 않고 입력 속성만 변경되는 경우나 직접 이벤트 핸들러를 통해 상태를 업데이트할 때 유용합니다. 이는 성능 최적화를 위해 권장되는 전략입니다.
기본 변경 검사 전략은 데이터의 변경을 실시간으로 반영해야 하거나 복잡한 UI를 다뤄야 하는 경우에 유용합니다.
요약
앵귤러에서는 변경 검사 전략을 통해 성능 최적화와 뷰 업데이트를 관리할 수 있습니다. OnPush 전략은 성능 최적화를 위해 권장되며, 상태의 변경이 없는 경우 변경 검사를 수행하지 않아 성능 향상에 도움이 됩니다.
따라서, 애플리케이션의 요구사항과 성능을 고려하여 적절한 변경 검사 전략을 선택하는 것이 중요합니다.