Vue의 반응성 시스템은 DOM을 효율적으로 업데이트하는 능력의 핵심입니다. 기술, 주로 의존성 추적 및 변경 알림 의 조합을 통해이를 달성합니다.
종속성 추적 : 구성 요소가 생성되면 VUE는 템플릿 및 데이터 속성을 통과합니다. "getter/setter"가로 채는 프로세스를 사용합니다. 기본적으로 VUE는 데이터 속성을 Getters 및 Setter로 변환합니다. 템플릿이 데이터 속성 (getter를 통해)에 액세스 할 때 Vue는 특정 템플릿 부품 (또는 계산 된 속성)이 해당 특정 데이터 속성에 의존하는지 비밀리에 기록합니다. 이로 인해 데이터 속성을 사용하는 템플릿의 일부에 데이터 속성을 매핑하는 종속성 그래프를 만듭니다.
알림 변경 : 데이터 속성이 수정되면 (세터를 통해) VUE는 전체 구성 요소를 맹목적으로 다시 렌더링하지 않습니다. 대신, 수정 된 속성에 의존하는 템플릿의 부분 만 다시 렌더링합니다. 초기 설정 중에 생성 된 종속성 그래프를 통과하여이를 달성합니다. 변경된 데이터에 의존하는 구성 요소 및 템플릿 부품 만 업데이트되어 DOM 조작량을 최소화합니다.
이 시스템은 JavaScript의 Proxy
API (최신 VUE 버전) 또는 Object.defineProperty
(이전 버전의 경우)에 크게 의존합니다. 이러한 API를 사용하면 VUE가 속성 액세스 및 수정을 가로 채어 종속성 추적 및 변경 알림 메커니즘을 가능하게합니다. 특정 구현 세부 사항은 VUE 버전에 따라 약간 다를 수 있지만 핵심 원칙은 동일하게 유지됩니다. 프로세스는 DOM의 필요한 부분 만 업데이트되므로 수동 DOM 조작에 비해 상당한 성능 개선을 초래하기 때문에 근본적으로 효율적입니다.
VUE의 반응성 시스템은 일반적으로 매우 효율적이지만 다른 시스템과 마찬가지로, 크고 복잡한 응용 분야에서 눈에 띄게 될 수있는 성능에 영향을 미칩니다.
긍정적 인 의미 :
부정적인 의미 :
성능의 영향은 응용 프로그램의 크기와 복잡성에 크게 좌우됩니다. 대부분의 응용 분야에서 VUE의 반응성 시스템은 탁월한 성능을 제공합니다. 그러나 최적화 전략은 더 크고 더 복잡한 프로젝트에 중요합니다.
더 나은 반응성 성능을 위해 VUE 애플리케이션을 최적화하면 몇 가지 전략이 필요합니다.
$nextTick
사용하십시오 : 데이터 변경 후 DOM에 액세스 해야하는 경우 $nextTick
사용하여 액세스하기 전에 DOM이 업데이트되었는지 확인하십시오. 이것은 인종 조건을 방지합니다.v-show
대신 v-if
사용하십시오. v-if
DOM에서 요소를 완전히 제거하고 v-show
CSS 디스플레이 속성 만 변경합니다. 요소가 조건부로 드물게 렌더링되면 v-if
사용하십시오.v-for
와 함께 key
소품을 사용하면 Vue가 개별 항목을 식별하고 DOM 조작을 최소화하여 목록을 효율적으로 업데이트 할 수 있습니다.input
이벤트와 같은) Defouncing 또는 조절을 사용하여 업데이트 빈도를 줄입니다. 예, 반응성 특성을 추가하기 위해 $set
method 또는 Vue.set
사용하여 Vue의 반응성 시스템을 수동으로 트리거 할 수 있습니다. 재 렌더를 강제하기위한 $forceUpdate
메소드를 추가하거나 Setter를 통해 반응성 데이터 속성을 직접 수정하여 Vue.Set을 수동으로 트리거 할 수 있습니다.
$set
또는 Vue.set
: this.$set(this.dataObject, 'propertyName', newValue)
또는 Vue.set(this.dataObject, 'propertyName', newValue)
사용하여 반응성 객체에 새 속성을 추가하거나 기존의 부동산을 반응적인 방식으로 업데이트하십시오. 이것은 VUE가 이미 관찰중인 객체에 새로운 속성을 추가 할 때 특히 중요합니다. 새 속성을 직접 할당하면 반응성이 유발되지 않습니다.$forceUpdate
: $forceUpdate()
메소드는 구성 요소의 재 렌더를 강제합니다. 계산 비용이 많이들 수 있으므로이 점이 드물게 사용하십시오. VUE의 반응성 시스템이 객체의 속성을 간접적으로 수정할 때 (예 : Object.assign
사용하여) 변경을 감지하지 못하는 가장자리 사례에서 주로 유용합니다.그러나 반응성을 수동으로 유발하는 것은 신중하게 사용해야한다는 것을 기억하십시오. 과용은 VUE의 반응성 시스템의 성능 이점을 무효화 할 수 있습니다. 내장 메커니즘은 일반적으로 충분하고 효율적입니다. 자동 반응성이 예상대로 작동하지 않는 예외적 인 경우에는 수동 트리거링을 예약해야합니다.
위 내용은 Vue의 반응성 시스템은 어떻게 후드에서 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!