템플릿 문법
Vue.js는 렌더링 된 DOM을 기본 Vue 인스턴스의 데이터에 선언적으로 바인딩 할 수있는 HTML 기반 템플릿 구문을 사용합니다.
모든 Vue.js 템플릿은 스펙을 호환하는 브라우저 및 HTML 파서로 구문 분석 할 수있는 유효한 HTML입니다.
내부적으로 Vue는 템플릿을 가상 DOM 렌더링 함수로 컴파일 합니다. 반응형 시스템과 결합된 Vue는 앱 상태가 변경 될 때 최소한으로 DOM을 조작하고
다시 적용할 수 있는 최소한의 컴포넌트를 지능적으로 파악할 수 있습니다.
가상 DOM 개념에 익숙하고 JavaScript의 기본 기능을 선호하는 경우 템플릿 대신 렌더링 함수를 직접 작성할 수 있으며 선택사항으로 JSX를 지원합니다.
보간법(Interpolation)
문자열
데이터 바인딩의 가장 기본 형태는 “Mustache” 구문(이중 중괄호)을 사용한 텍스트 보간입니다.
<span>메시지: {{ msg }}</span>
Mustache 태그는 해당 데이터 객체의 msg 속성 값으로 대체됩니다. 또한 데이터 객체의 msg 속성이 변경될 때 마다 갱신됩니다.
v-once 디렉티브를 사용하여 데이터 변경 시 업데이트 되지 않는 일회성 보간을 수행할 수 있지만, 같은 노드의 바인딩에도 영향을 미친다는 점을 유의해야 합니다.
<span v-once>다시는 변경하지 않습니다: {{ msg }}</span>
원시 HTML
이중 중괄호(mustaches)는 HTML이 아닌 일반 텍스트로 데이터를 해석합니다. 실제 HTML을 출력하려면 v-html 디렉티브를 사용해야 합니다.
<p>Using mustaches: {{ rawHtml }}</p>
<p>Using v-html directive: <span v-html="rawHtml"></span></p>
span의 내용은 rawHtml로 대체됩니다. 이 때 데이터 바인딩은 무시됩니다. Vue는 문자열 기반 템플릿 엔진이 아니기 때문에 v-html을 이용해 템플릿을 사용할 수 없습니다. 이와 달리 컴포넌트는 UI 재사용 및 구성을 위한 기본 단위로 사용하는 것을 추천합니다.
웹사이트에서 임의의 HTML을 동적으로 렌더링하려면 XSS 취약점으로 쉽게 이어질 수 있으므로 매우 위험할 가능성이 있습니다. 신뢰할 수 있는 콘텐츠에서만 HTML 보간을 사용하고 사용자가 제공한 콘텐츠에서는 절대 사용하면 안됩니다.
속성
Mustaches는 HTML 속성에서 사용할 수 없습니다. 대신 v-bind 디렉티브를 사용하세요:
<div v-bind:id="dynamicId"></div>
boolean 속성을 사용할 때 단순히 true인 경우 v-bind는 조금 다르게 작동합니다.
<button v-bind:disabled="isButtonDisabled">Button</button>
isButtonDisabled가 null, undefined 또는false의 값을 가지면 disabled 속성은 렌더링 된<button>엘리먼트에 포함되지 않습니다.
JavaScript 표현식 사용
지금까지 템플릿의 간단한 속성 키에만 바인딩했습니다. 그러나 실제로 Vue.js는 모든 데이터 바인딩 내에서 JavaScript 표현식의 모든 기능을 지원합니다.
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
<div v-bind:id="'list-' + id"></div>
이 표현식은 Vue 인스턴스 데이터 범위 내에서 JavaScript로 계산됩니다. 한가지 제한사항은 각 바인딩에 하나의 단일 표현식 만 포함될 수 있으므로 아래처럼 작성하면 안됩니다
<!-- 아래는 구문입니다, 표현식이 아닙니다. -->
{{ var a = 1 }}
<!-- 조건문은 작동하지 않습니다. 삼항 연산자를 사용해야 합니다. -->
{{ if (ok) { return message } }}
템플릿 표현식은 샌드박스 처리되며 Math와 Date 같은 전역으로 사용 가능한 것에만 접근할 수 있습니다. 템플릿 표현식에서 사용자 정의 전역에 액세스 하지 마십시오.
게시글 목록
| 번호 | 제목 |
|---|---|
| 3349 | |
| 3346 |
CSS
다양한 css 선택자 알아보기
|
| 3345 |
HTML
sitemap.xml 추출 사이트
2
|
| 3343 |
CSS
Flex layout
|
| 3342 | |
| 3341 | |
| 3329 |
기타
구글폰트
2
|
| 3321 | |
| 3319 | |
| 3318 |
기타
W3.CSS 여백
2
|
| 3317 | |
| 3316 |
기타
W3.CSS 패딩
|
| 3315 |
CSS
W3.CSS 서클 내 텍스트
|
| 3314 |
CSS
W3.CSS 라운드 클래스
|
| 3313 |
CSS
W3.CSS 텍스트 그림자
|
| 3312 |
CSS
W3.CSS 와이드 텍스트
|
| 3311 |
CSS
W3.CSS 텍스트
|
| 3310 | |
| 3306 |
기타
W3.CSS Fonts
|
| 3305 | |
| 3304 | |
| 3303 | |
| 3302 | |
| 3301 | |
| 3300 |
HTML
html 테그 정리기
2
|
| 3299 | |
| 3298 | |
| 3297 | |
| 3296 | |
| 3294 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기