Vue 지침 v-show와 v-if를 비교하고 사용 시나리오에 대해 이야기해 보세요.
이 글은 Vue 명령인 v-show와 v-if를 비교하고, v-show와 v-if의 차이점을 소개하며, v-show와 v-if의 사용 시나리오에 대해 이야기하는 데 도움이 되기를 바랍니다. 모두에게!
1. v-show와 v-if의 차이점
vue에서는 v-show와 v-if 모두 요소가 페이지에 표시되는지 여부를 제어할 수 있습니다.
v-show의 표시 및 숨기기는 CSS 요소의 표시 속성을 조작하는 것이므로 v-show를 사용하여 요소를 숨길 때 요소의 dom 노드가 여전히 페이지에 표시되고 숨겨집니다. v-if의 dom 요소 전체 추가 또는 삭제를 숨기는 것입니다. [관련 권장사항: vuejs 비디오 튜토리얼]
v-if 전환에는 부분 컴파일/제거 프로세스가 있습니다. 전환 프로세스 중에 내부 이벤트 리스너와 하위 구성 요소가 적절하게 삭제되고 다시 빌드됩니다. 단순한 CSS 표시 속성입니다.
v-if는 조건부 블록 내의 이벤트 리스너와 하위 구성 요소가 전환 중에 적절하게 삭제되고 다시 생성되도록 보장하는 진정한 조건부 렌더링입니다. 렌더링 조건이 false인 경우에만 아무 작업도 수행하지 않으며, true가 될 때까지 렌더링되지 않습니다.
v-show는 false에서 true로 변경될 때 구성 요소의 라이프 사이클을 트리거하지 않습니다. v-if가 false에서 true로 변경되면 구성 요소의 beforeCreate, create, beforeMount 및 탑재된 라이프 사이클 후크가 트리거됩니다. true에서 false로 변경되면 해당 구성 요소의 beforeDestory 및 destroy 메소드가 트리거됩니다.
성능 소모 측면에서 v-if의 스위칭 소모가 더 높고, v-show의 초기 렌더링 소모가 더 높습니다.
2. v-show 및 v-if의 사용 시나리오
v-if 및 v-show는 v-if와 비교하여 페이지에서 dom 요소의 표시 및 숨기기를 제어할 수 있습니다. showoverhead 큰 경우(dom 노드의 추가 및 삭제를 직접 조작), 매우 자주 전환해야 하는 경우 v-show를 사용하는 것이 좋습니다. 런타임 중에 조건이 거의 변경되지 않으면 v-if를 사용하는 것이 좋습니다.
3. v-show 및 v-if
export const vShow: ObjectDirective<VShowElement> = { beforeMount(el, { value }, { transition }) { el._vod = el.style.display === 'none' ? '' : el.style.display if (transition && value) { transition.beforeEnter(el) } else { setDisplay(el, value) } }, mounted(el, { value }, { transition }) { if (transition && value) { transition.enter(el) } }, updated(el, { value, oldValue }, { transition }) { // ... }, beforeUnmount(el, { value }) { setDisplay(el, value) } }
- v-if를 직접 설정하여 판단합니다. 추상 구문 트리는 코드 문자열로 변환됩니다. v -if가 false인 경우 렌더링 함수에 의해 생성된 vnode에는 렌더링할 노드가 포함되지 않지만 주석이 달린 vnode 노드가 자리 표시자로 포함됩니다
export const transformIf = createStructuralDirectiveTransform( /^(if|else|else-if)$/, (node, dir, context) => { return processIf(node, dir, context, (ifNode, branch, isRoot) => { // ... return () => { if (isRoot) { ifNode.codegenNode = createCodegenNodeForBranch( branch, key, context ) as IfConditionalExpression } else { // attach this branch's codegen node to the v-if root. const parentCondition = getParentCondition(ifNode.codegenNode!) parentCondition.alternate = createCodegenNodeForBranch( branch, key + ifNode.branches.length - 1, context ) } } }) } )
- (동영상 공유 학습 :
- vuejs 튜토리얼 ,
위 내용은 Vue 지침 v-show와 v-if를 비교하고 사용 시나리오에 대해 이야기해 보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

HTML 템플릿의 버튼을 메소드에 바인딩하여 VUE 버튼에 함수를 추가 할 수 있습니다. 메소드를 정의하고 VUE 인스턴스에서 기능 로직을 작성하십시오.

vue.js의 시계 옵션을 사용하면 개발자가 특정 데이터의 변경 사항을들을 수 있습니다. 데이터가 변경되면 콜백 기능을 트리거하여 업데이트보기 또는 기타 작업을 수행합니다. 구성 옵션에는 즉시 콜백을 실행할지 여부와 DEEP를 지정하는 즉시 포함되며, 이는 객체 또는 어레이에 대한 변경 사항을 재귀 적으로 듣는 지 여부를 지정합니다.

VUE 멀티 페이지 개발은 vue.js 프레임 워크를 사용하여 응용 프로그램을 구축하는 방법입니다. 여기서 응용 프로그램은 별도의 페이지로 나뉩니다. 코드 유지 보수 : 응용 프로그램을 여러 페이지로 분할하면 코드를보다 쉽게 관리하고 유지 관리 할 수 있습니다. 모듈 식 : 각 페이지는 쉬운 재사용 및 교체를 위해 별도의 모듈로 사용할 수 있습니다. 간단한 라우팅 : 페이지 간의 탐색은 간단한 라우팅 구성을 통해 관리 할 수 있습니다. SEO 최적화 : 각 페이지에는 자체 URL이있어 SEO가 도움이됩니다.

vue.js에서 JS 파일을 참조하는 세 가지 방법이 있습니다. & lt; script & gt; 꼬리표;; mounted () 라이프 사이클 후크를 사용한 동적 가져 오기; Vuex State Management Library를 통해 수입.

vue.js는 이전 페이지로 돌아갈 수있는 네 가지 방법이 있습니다. $ router.go (-1) $ router.back () 사용 & lt; router-link to = & quot;/quot; Component Window.history.back () 및 메소드 선택은 장면에 따라 다릅니다.

vue.js가 트래버스 어레이 및 객체에 대한 세 가지 일반적인 방법이 있습니다. V- 결합 지시문은 V-FOR와 함께 사용하여 각 요소의 속성 값을 동적으로 설정할 수 있습니다. .MAP 메소드는 배열 요소를 새 배열로 변환 할 수 있습니다.

VUE에서 DIV 요소를 점프하는 두 가지 방법이 있습니다. VUE 라우터를 사용하고 라우터 링크 구성 요소를 추가하십시오. @Click 이벤트 리스너를 추가하고 이것을 호출하십시오. $ router.push () 메소드를 점프하십시오.
