Vue에서는 v-if
및 v-show
를 사용하여 요소나 템플릿의 렌더링을 제어할 수 있습니다. 그리고 v-if
및 v-show
도 Vue에서 일반적으로 사용되는 내부 명령어입니다. 여기에 언급된 명령어는 v-
접두사가 붙은 특수 명령을 나타내는 지시문
입니다. 명령어의 값은 바인딩 표현으로 제한됩니다. 값이 변경되면 DOM에 특별한 동작을 적용하는 것입니다. v-if
和v-show
来控制元素或模板的渲染。而v-if
和v-show
也属于Vue的内部常用的指令。这里所说的指令就是directive
,指特殊的带有前缀v-
的命令,指令的值限定为绑定表达式,指令的职责是当表达式的值改变时把某些特殊的行为应用到DOM上。
v-if
和v-show
两个指令就是大家常说的条件渲染指令。(学习视频分享:vue视频教程)
v-if : 条件分支指令
咱们先来看v-if
指令。其作用就是根据表达式的值true
或false
在DOM中生成或者移除一个元素(或多个元素)。有点类似JavaScript中的if
条件判断。在Vue中除了v-if
也有v-else-if
和v-else
之类。
v-if
前面说到过v-if
根据表达式来的值来判断在DOM中生成元素。比如:
<!-- template --> <div> <h1 id="v-if的值为true时-显示这个div元素">v-if的值为true时,显示这个div元素</h1> </div> // JavaScript var app = new Vue({ el: '#app', data: { } })
这个时候<h1></h1>
元素插入到div#app
元素中,并渲染出来:
在Vue中,如果你需要让某个元素是否渲染,那就在该元素上添加v-if
指令,并且设置其值为true
或false
。比如上面的示例,我们设置的是true
,元素被渲染。如果把上面的true
值换成false
,<h1></h1>
元素就不会渲染。
除了直接给v-if
设置true
或false
之外,还可以通过表达式来做判断。比如:
<!-- template --> <div> <h1> v-if的值为true时,显示这个div元素 </h1> </div> // JavaScript var app = new Vue({ el: '#app', data: { isShow: true } })
上面的示例中,声明了isShow
的值为true
,然后在h1
元素中,通过v-if
指令绑定isShow
。其实类似于v-if="true"
。h1
元素也正常渲染:
当你把isShow
设置为false
时,h1
元素又不会渲染。
上面我们看到的是渲染一个元素,如果要渲染多个元素,那是不是直接里面嵌套多个元素呢?我们来验证一下自己的想法:
<!-- template --> <div> <div> <h1 id="我是标题">我是标题</h1> <p>我是段落</p> </div> </div>
和我们想像的一样。但在Vue中,我们切换多个元素一般不这么使用,而是配合<template></template>
元素当做包装元素,并在上面使用v-if
。最终的渲染结果不会包含<template></template>
元素。如下所示:
<template> <h1 id="标题">标题</h1> <p>段落 1</p> <p>段落 2</p> </template>
v-else
v-else
和JavaScript中的else
类似,但其要和v-if
配合使用。比如我们做登录,如果登录了显示一个欢迎语,反则提示用户去登录。那么我们可以设置一个isLogined
表达式,比如:
<!-- Template --> <div> <h1 id="欢迎来到W-cplus">欢迎来到W3cplus!(^_^)</h1> <h1 id="请先登录-再来">请先登录,再来!(^_^)</h1> </div> // JavaScript var app = new Vue({ el: '#app', data: { isLogined: true } })
如你所想,你在浏览器能看到下图的效果:
把isLogined
的值换成false
,那么渲染出来的内容就变了:
在实际项目中,当我们一个组件在两种状态渲染的效果不一样的时候,这个时候使用v-if
和v-else
配合<template></template>
就很好实现了。比如中奖和未中奖:
<template> <figure> <figcaption>恭喜你中了5元红包</figcaption> <img src="/static/imghwm/default1.png" data-src="xxx" class="lazy" alt="Vue 조건부 렌더링 지침에 대한 자세한 설명: v-if 및 v-show" > </figure> </template> <template> <figure> <figcaption>亲,就差那么一点点</figcaption> <img src="/static/imghwm/default1.png" data-src="xxx" class="lazy" alt="Vue 조건부 렌더링 지침에 대한 자세한 설명: v-if 및 v-show" > </figure> </template>
v-else-if
v-else-if
和JavaScript中的else if
类似,需要和v-if
配合在一起使用。当有几个条件同时在的时候,根据运算结果决定显示与否。如下面的代码,根据type
的值决定显示哪一个区块。比如,我们的例子,设定的type
的值B
,那么就会显示区块B
:
<!-- template --> <div> <div>显示A区域</div> <div>显示B区域</div> <div>显示C区域</div> </div> // JavaScript var app = new Vue({ el: '#app', data: { type: "B" } })
如果修改type

v-if
및 v 두 개의 명령어 -show
는 일반적으로 조건부 렌더링 명령어라고 합니다. (학습 영상 공유: vue 영상 튜토리얼)
v-if : 조건 분기 명령어
🎜먼저
v-if
명령어를 살펴보겠습니다. 그 기능은 true
또는 false
표현식의 값을 기반으로 DOM에서 요소(또는 여러 요소)를 생성하거나 제거하는 것입니다. 이는 JavaScript의 if
조건부 판단과 다소 유사합니다. Vue에는 v-if
외에도 v-else-if
및 v-else
도 있습니다. 🎜
v-if
🎜 앞서 언급했듯이 v-if
는 표현식 DOM에서 요소를 생성할지 여부를 결정합니다. 예: 🎜<!-- Template --> <div> <h1 id="我是一个标题">我是一个标题</h1> <p>我是一个段落</p> </div> // JavaScript var app = new Vue({ el: '#app', data: { isShow: false } })🎜이 때
<h1></h1>
요소가 div#app
요소에 삽입되어 렌더링됩니다. 🎜🎜

v-if
지시어를 추가하고 해당 값을 true
또는 false
로 설정하세요. 예를 들어 위의 예에서는 true
를 설정하고 요소가 렌더링됩니다. 위의 true
값이 false
로 바뀌면 <h1></h1>
요소가 렌더링되지 않습니다. 🎜🎜true
또는 false
를 v-if
로 직접 설정하는 것 외에도 표현식을 통해 판단할 수도 있습니다. 예: 🎜rrreee🎜위의 예에서 isShow
의 값은 true
로 선언된 다음 h1
요소에서 다음을 전달합니다. v -if
지시문은 isShow
를 바인딩합니다. 실제로 v-if="true"
와 유사합니다. h1
요소도 정상적으로 렌더링됩니다:🎜🎜

isShow
를 false
로 설정하면 h1
요소가 렌더링되지 않습니다. 🎜🎜

<template></template>
요소를 패키징 요소로 사용하고 v-if를 입력하세요. 최종 렌더링 결과에는 <template></template>
요소가 포함되지 않습니다. 아래와 같이: 🎜rrreee🎜
🎜v-else
🎜v-else
는 JavaScript의 else
와 유사하지만 v-if
와 유사합니다. 코드> >함께 사용하세요. 예를 들어 로그인하면 로그인하면 환영 메시지가 표시되고, 그렇지 않으면 사용자에게 로그인하라는 메시지가 표시됩니다. 그런 다음 다음과 같은 isLogined
표현식을 설정할 수 있습니다. 🎜rrreee🎜생각하시는 대로 브라우저에서 다음 그림의 효과를 볼 수 있습니다. 🎜🎜
🎜🎜 isLogined
값을 false
로 바꾸세요 , 렌더링된 콘텐츠가 다음과 같이 변경됩니다. 🎜🎜
🎜 🎜실제 프로젝트에서 구성 요소가 두 가지 상태에서 다르게 렌더링되면 <template></template>
와 함께 v-if
및 v-else
를 사용합니다. 구현합니다. 예를 들어 승리와 실패: 🎜rrreeev-else-if
🎜v-else-if
및 else if는 유사하며 <code>v-if
와 함께 사용해야 합니다. 여러 조건이 동시에 존재할 경우, 연산 결과에 따라 표시 여부가 결정됩니다. 다음 코드와 같이 type
값에 따라 어떤 블록이 표시되는지가 결정됩니다. 예를 들어, 이 예에서 type
값이 B
로 설정된 경우 B
블록이 표시됩니다. 🎜rrreee🎜If type
값을 수정하면 표시되는 영역이 달라집니다: 🎜🎜🎜🎜v-show
文章开头提到过,除了v-if
之外,Vue还提供v-show
也可以控制元素的渲染。v-show
和v-if
功能有点相似,其中v-if
依赖于控制DOM节点,而v-show
是依赖于控制DOM节点的display
属性。当v-show
传入的值为true
时,对应DOM元素的display
的值为block
之类的,反之为false
时,display
的值为none
。也就是用户看不到元素的显示,但其DOM元素还是存在的。
<!-- Template -->
<div>
<h1 id="我是一个标题">我是一个标题</h1>
<p>我是一个段落</p>
</div>
// JavaScript
var app = new Vue({
el: '#app',
data: {
isShow: false
}
})
在浏览器看到的效果将是这样的:

注意,v-show
不支持 <template></template>
语法,也不支持 v-else
。
v-if Vs. v-show
v-if
和v-show
都能控制DOM元素的显示和隐藏,但是在切换v-if
模块时,Vue有一个局部编译/卸载过程,因为v-if
中的模板可能包括数据绑定或者子组件,v-if
是真是的条件渲染,它会确保条件快在切换时合适的销毁与重建条件块内的时间监听器和子组件。
两者之间的具体区别,官网是这样描述的:
-
v-if
是“真正的”条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建
-
v-if
也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。
- 相比之下,
v-show
就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。
一般来说,v-if
有更高的切换开销,而 v-show
有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show
较好;如果在运行时条件不太可能改变,则使用 v-if
较好。
总结
这篇文章主要了解了Vue中的v-if
和v-show
。这两个都是Vue的内部指令,而且都是用来控制元素的渲染。只不过,v-if
判断是否加载,可以减轻服务器的压力,在需要时加载;v-show
调整DOM元素的CSS的dispaly
属性,可以使客户端操作更加流畅。虽然这两都都能很好的控制元素的渲染,但实际使用的时候,更应该根据自己的场景来判断使用哪一个指令。
原文地址::https://www.w3cplus.com/vue/v-if-vs-v-show.html
위 내용은 Vue 조건부 렌더링 지침에 대한 자세한 설명: v-if 및 v-show의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

vue.js는 프론트 엔드 프레임 워크이며 백엔드 프레임 워크는 서버 측 로직을 처리하는 데 사용됩니다. 1) vue.js는 사용자 인터페이스를 구축하는 데 중점을두고 구성 요소화 및 반응 형 데이터 바인딩을 통해 개발을 단순화합니다. 2) Express 및 Django와 같은 백엔드 프레임 워크는 HTTP 요청, 데이터베이스 작업 및 비즈니스 로직을 처리하고 서버에서 실행됩니다.

Vue.js는 개발 효율성과 사용자 경험을 향상시키기 위해 프론트 엔드 기술 스택과 밀접하게 통합되어 있습니다. 1) 건설 도구 : 모듈 식 개발을 달성하기 위해 웹 팩 및 롤업과 통합. 2) 주 관리 : Vuex와 통합하여 복잡한 응용 프로그램 상태를 관리합니다. 3) 라우팅 : vuerouter와 통합하여 단일 페이지 응용 프로그램 라우팅을 실현합니다. 4) CSS 전 처리기 : 스타일 개발 효율성을 향상시키기 위해 SASS를 지원하고 덜 지원합니다.

Netflix는 React의 구성 요소 설계 및 가상 DOM 메커니즘이 복잡한 인터페이스와 빈번한 업데이트를 효율적으로 처리 할 수 있기 때문에 REACT를 선택했습니다. 1) 구성 요소 기반 설계를 통해 Netflix는 인터페이스를 관리 가능한 위젯으로 분류하여 개발 효율성 및 코드 유지 관리를 향상시킬 수 있습니다. 2) 가상 DOM 메커니즘은 DOM 운영을 최소화하여 Netflix 사용자 인터페이스의 부드러움과 고성능을 보장합니다.

Vue.js는 사용하기 쉽고 강력하기 때문에 개발자에게 사랑을받습니다. 1) 반응 형 데이터 바인딩 시스템은 뷰를 자동으로 업데이트합니다. 2) 구성 요소 시스템은 코드의 재사용 성과 유지 관리를 향상시킵니다. 3) 컴퓨팅 속성 및 청취자는 코드의 가독성과 성능을 향상시킵니다. 4) vuedevtools를 사용하고 콘솔 오류를 확인하는 것이 일반적인 디버깅 기술입니다. 5) 성능 최적화에는 주요 속성, 계산 된 속성 및 유지 구성 요소 사용이 포함됩니다. 6) 모범 사례에는 명확한 구성 요소 이름 지정, 단일 파일 구성 요소 사용 및 수명주기 후크의 합리적인 사용이 포함됩니다.

vue.js는 효율적이고 유지 관리 가능한 프론트 엔드 애플리케이션을 구축하는 데 적합한 점진적인 JavaScript 프레임 워크입니다. 주요 기능은 다음과 같습니다. 1. 응답 데이터 바인딩, 2. 구성 요소 개발, 3. 가상 Dom. 이러한 기능을 통해 vue.js는 개발 프로세스를 단순화하고 응용 프로그램 성능과 유지 관리를 향상시켜 현대 웹 개발에서 매우 인기가 있습니다.

vue.js와 반응은 각각 고유 한 장점과 단점이 있으며, 선택은 프로젝트 요구 사항 및 팀 조건에 따라 다릅니다. 1) vue.js는 단순하고 사용하기 쉬운 소규모 프로젝트 및 초보자에게 적합합니다. 2) REACT는 풍부한 생태계와 구성 요소 설계로 인해 대규모 프로젝트 및 복잡한 UI에 적합합니다.

vue.js는 여러 기능을 통해 사용자 경험을 향상시킵니다. 1. 응답 시스템은 실시간 데이터 피드백을 실현합니다. 2. 구성 요소 개발은 코드 재사용 성을 향상시킵니다. 3. Vuerouter는 원활한 내비게이션을 제공합니다. 4. 동적 데이터 바인딩 및 전환 애니메이션은 상호 작용 효과를 향상시킵니다. 5. 오류 처리 메커니즘은 사용자 피드백을 보장합니다. 6. 성능 최적화 및 모범 사례는 응용 프로그램 성능을 향상시킵니다.

웹 개발에서 vue.js의 역할은 개발 프로세스를 단순화하고 효율성을 향상시키는 점진적인 JavaScript 프레임 워크 역할을하는 것입니다. 1) 개발자는 반응 형 데이터 바인딩 및 구성 요소 개발을 통해 비즈니스 로직에 집중할 수 있습니다. 2) vue.js의 작동 원리는 반응 형 시스템 및 가상 DOM에 의존하여 성능을 최적화합니다. 3) 실제 프로젝트에서는 Vuex를 사용하여 글로벌 상태를 관리하고 데이터 대응 성을 최적화하는 것이 일반적입니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

WebStorm Mac 버전
유용한 JavaScript 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음
