Vue.js computed속성의 캐싱 vs 메소드

· 2019-01-16 (수) 17:32:49 · 2159

Vue.js computed속성의 캐싱 vs 메소드


표현식에서 메소드를 호출하여 같은 결과를 얻을 수도 있습니다.

HTML부분
<p>뒤집힌 메시지 : "{{reversedMessage}}"</p>

JS부분
//컴포넌트내부
methods : {
    reversedMessage: function(){
        return this.message.split('').reverse().join('')
    }
}

computed속성 대신 메소드와 같은 함수를 정의할 수도 있습니다.
최종 결과에 대해 두 가지접근 방식은 서로 동일합니다. 
차이점은 computed속성은 종속 대상을 따라 저장(캐싱)된다는 것입니다.
computed속성은 해당 속성이 종속된 대상이 변경될 때만 함수를 실행합니다.
즉, message가 변경되지 않는 한, computed속성인 reverseMessage를 여러 번 
요청해도 계산을 다시 하지 않고 계산되어 있던 결과를 즉시 반환합니다. 

또한 Date.now()처럼 아무 곳에도 의존하지 않는 computed속성의 경우 절대로 업데이트되지 
않는다는 뜻입니다.

JS부분
computed: {
    now : function(){
        return Date.now()
    }
}

이에 비해 메소드를 호출하면 렌더링을 다시 할 때마다 항상 함수를 실행합니다. 
캐싱이 왜 필요할까요? 계산에 시간이 많이 걸리는 computed속성인 A를 가지고 있다고 해봅시다.
이 속성을 계산하려면 거대한 배열을 반복해서 다루고 많은 계산을 해야 합니다. 
그런데 A에 의존하는 다른 computed속성값도 있을 수 있습니다. 
캐싱을 하지 않으면 A의 getter함수를 꼭 필요한 것보다 더 많이 실행하게 됩니다. 
캐싱을 원하지 않는 경우 메소드를 사용하십시오

|
댓글을 작성하시려면 로그인이 필요합니다.

퍼블리셔팁

1,282건

퍼블리싱과 관련된 유용한 정보를 공유하세요. 질문은 상단의 QA에서 해주시기 바랍니다.

+
분류 제목 글쓴이 날짜 조회
기타 19-02-04 조회 4,407
기타 19-02-04 조회 6,729
기타 19-01-31 조회 2,952
기타 19-01-31 조회 2,873
기타 19-01-31 조회 2,364
기타 19-01-28 조회 2,813
기타 19-01-28 조회 2,620
기타 19-01-28 조회 2,652
기타 19-01-24 조회 2,634
기타 19-01-24 조회 2,381
기타 19-01-24 조회 2,723
기타 19-01-23 조회 2,270
기타 19-01-23 조회 2,445
기타 19-01-23 조회 2,618
기타 19-01-22 조회 2,712
기타 19-01-22 조회 2,203
기타 19-01-22 조회 2,088
기타 19-01-21 조회 2,566
기타 19-01-16 조회 2,160
기타 19-01-16 조회 1,913
기타 19-01-16 조회 2,115
기타 19-01-12 조회 1,807
기타 19-01-12 조회 2,016
기타 19-01-12 조회 1,731
기타 19-01-11 조회 1,853
기타 19-01-11 조회 1,774
기타 19-01-11 조회 2,067
기타 19-01-10 조회 1,793
기타 19-01-10 조회 2,127
기타 19-01-10 조회 2,117