v-text
- 요구 되는 값
string
- element의 텍스트 컨텐츠 업데이트
- 기존 컨텐츠 덮어씀
- 일부를 업데이트 하는 경우 이중 중괄호
{{}}
사용
<span v-text="msg"></span>
<!-- 아래와 같음 -->
<span>{{msg}}</span>
v-html
- 요구 되는 값
string
- element의 innerHTML 업데이트
- Vue 템플릿 문법을 처리하지 않고 일반 HTML 로 삽입됨
⚠️ 임의의 HTML 동적으로 렌더링하는 것은 XSS 공격에 취약해 지므로 신뢰할 수 있는 컨텐츠에만 사용
<div v-html="html"></div>
v-show
- 요구 되는 값
any
- 표현식의 truthy 값을 기반으로 element 가시성 전환
display
CSS 속성을 설정, 조건이 변경될 때 전환을 트리거- true면 화면에 보이고(display:auto 또는 display:inherit)
- false이면 화면에 안 보임(display:none)
v-if
- 요구 되는 값
any
- 표현식의 truthy 값을 기반으로 element 또는 템플릿 일부를 조건부로 렌더링
- true 이면 렌더링
- false이면 요소를 생성하지 않음 ↔
v-show
display:none으로 DOM이 유지됨
- 텍스트 또는 엘리먼트를 포함하는 조건부 블록을 나타내기위해
<template>
사용 가능 v-for
보다 우선순위 높음
v-else
v-if
또는v-else-if
체인에 대한else
- 표현식 허용하지 않음
<template>
에서 텍스트 또는 여러 엘리먼트를 포함하는 조건부 블록을 나타내는 데 사용 가능
v-else-if
- 요구 되는 값
any
- 계속 이어서 사용 가능
<template>
에서 텍스트 또는 여러 엘리먼트를 포함하는 조건부 블록을 나타내는 데 사용 가능
v-for
- 요구되는 값
Array
|Object
|number
|string
|Iterable
- 소스 데이터를 기반으로 엘리먼트 또는 템플릿 블록을 여러 번 렌더링
<!-- *alias in expression* 문법을 사용해야 함 -->
<div v-for="item in items">
{{ item.text }}
</div>
<!-- 인덱스의 별칭 지정 가능 -->
<div v-for="(item, index) in items"></div>
<div v-for="(value, key) in object"></div>
<div v-for="(value, name, index) in object"></div>
<!-- 강제로 엘리먼트를 재정렬할 때 속성 key 사용-->
<div v-for="item in items" :key="item.id">
{{ item.text }}
</div>
v-on
- 단축 문법
@
- 요구되는 값
Function
|Inline Statement
|Object (without argument)
- 인자
event
(선택)
수식어 | 설명 |
---|---|
.stop |
event.stopPropation() 호출 |
.prevent |
event.preventDefault() 호출 |
.capture |
캡처 모드로 이벤트 등록 |
.self |
이벤트가 이 엘리먼트에서 전달된 경우에만 트리거 됨 |
.{keyAlias} |
이벤트가 특정 키에 대해서만 트리거 됨 |
.once |
이벤트가 한 번만 트리거 됨 (일회용) |
.left |
마우스 왼쪽 버튼으로만 이벤트가 트리거 됨 |
.right |
마우스 오른쪽 버튼으로만 이벤트가 트리거 됨 |
.middle |
마우스 중앙(힐 클릭)버튼으로만 이벤트가 트리거 됨 |
.passive |
{passive:true} 옵션으로 DOM 이벤트를 등록 |
<!-- 메서드 핸들러 -->
<button v-on:click="doThis"></button>
<!-- 동적 이벤트 -->
<button v-on:[event]="doThis"></button>
<!-- 인라인 표현식, 이벤트 객체에 접근 -->
<button v-on:click="doThat('hello', $event)"></button>
<!-- 단축 문법 -->
<button @click="doThis"></button>
<!-- 단축 문법 동적 이벤트 -->
<button @[event]="doThis"></button>
<!-- 전파 중지 -->
<button @click.stop="doThis"></button>
<!-- event.preventDefault() 작동 -->
<button @click.prevent="doThis"></button>
<!-- 표현식 없이 event.preventDefault()만 사용 -->
<form @submit.prevent></form>
<!-- 수식어 이어서 사용 -->
<button @click.stop.prevent="doThis"></button>
<!-- 키 별칭을 수식어로 사용 -->
<input @keyup.enter="onEnter" />
<!-- 클릭 이벤트 단 한 번만 트리거 -->
<button v-on:click.once="doThis"></button>
<!-- 객체 문법 -->
<button v-on="{ mousedown: doThis, mouseup: doThat }"></button>
v-bind
- 요구되는 값
any (인자 O)
|Object (인자X)
- 인자
attrOrProp
(선택)
수식어 | 설명 |
---|---|
.camel |
kebab-case 소성 이름을 camelCase로 변환 |
.prop |
바인딩을 DOM속성(property)로 강제 설정 (3.2+) |
.attr |
바인딩을 DOM(attribute)으로 강제 설정 (3.2+) |
- 하나 이상의 속성 또는 컴포넌트 prop을 표현식에 동적으로 단방향 바인딩
<!-- 속성 바인딩 -->
<img v-bind:src="imageSrc" />
<!-- 동적인 속성명 -->
<button v-bind:[key]="value"></button>
<!-- 단축 문법 -->
<img :src="imageSrc" />
<!-- 같은 이름 생략 가능 (3.4+), 오른쪽과 같음 :src="src" -->
<img :src />
<!-- 단축 문법과 동적 속성명 -->
<button :[key]="value"></button>
<!-- 인라인으로 문자열 결합 -->
<img :src="'/path/to/images/' + fileName" />
<!-- class 바인딩 -->
<div :class="{ red: isRed }"></div>
<div :class="[classA, classB]"></div>
<div :class="[classA, { classB: isB, classC: isC }]"></div>
<!-- style 바인딩 -->
<div :style="{ fontSize: size + 'px' }"></div>
<div :style="[styleObjectA, styleObjectB]"></div>
<!-- 속성을 객체로 바인딩 -->
<div v-bind="{ id: someProp, 'other-attr': otherProp }"></div>
<!-- prop 바인딩. "prop"은 자식 컴포넌트에서 선언되어 있어야 함 -->
<MyComponent :prop="someThing" />
<!-- 자식 컴포넌트와 공유될 부모 props를 전달 -->
<MyComponent v-bind="$props" />
<!-- XLink -->
<svg><a :xlink:special="foo"></a></svg>
<!-- .prop 수식어는 전용 단축 문법 .가 있음 -->
<div :someProperty.prop="someObject"></div>
<!-- 위 코드는 아래와 같이 단축할 수 있음 -->
<div .someProperty="someObject"></div>
v-model
- 요구되는 값 사용자 입력을 받는 폼 엘리먼트 또는 컴포넌트의 출력 값에 따라 다름
- 다음으로 제한 됨
<input>
<select>
<textarea>
컴포넌트
수식어 | 설명 |
---|---|
.lazy |
input 에서 엔터를 치거나 포커스 이동했을 때(change 이벤트) 입력값과 속성을 동기화 |
.number |
유효한 입력 문자열을 숫자로 변환해 전달 |
.trim |
문자열의 앞뒤 공백을 자동으로 제거 |
'Vue.js' 카테고리의 다른 글
HTML, SFC, Options, Composition - Vue.js (0) | 2025.03.26 |
---|---|
반응형 기초 - Vue.js (0) | 2025.03.22 |
계산된 속성(Computed Property) - Vue.js (0) | 2025.03.22 |
이벤트 핸들링 - Vue.js (0) | 2025.03.21 |
템플릿 문법 - Vue.js (0) | 2025.03.19 |