developer-ellen
인간 디버거의 로그 찍기
developer-ellen
전체 방문자
오늘
어제
  • 분류 전체보기 (217)
    • 회고록 (0)
    • 취뽀 및 커리어 여정의 Stack (2)
      • SSAFY 7기 (2)
    • 프로그래밍공부 (24)
      • c++ (0)
      • JAVA (3)
      • Spring (5)
      • design pattern (3)
      • BackDB (1)
      • Servlet&JSP (3)
      • Vue (4)
      • JPA (4)
      • Infra (1)
      • Linux (0)
    • AI (3)
      • papers (3)
      • trend (0)
    • 프로젝트진행 (0)
      • 데이터베이스 (0)
      • 서버개발 (0)
      • 인공지능 (0)
      • 하루정리 (0)
    • 포트폴리오 (0)
    • 알고리즘 (158)
      • 알고리즘문풀 (155)
      • 알고리즘공부 (3)
    • 통계공부 (15)
      • 시계열분석 (15)
      • 회귀분석 (0)
    • CS (14)
      • 컴퓨터네트워크 (4)
      • 운영체제 (8)
      • 데이터베이스 (2)
    • 주저리주저리 (0)
      • 필사 (0)
    • 취업관련정보 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 삼성코테자바꿀팁
  • 삼성코테준비
  • 삼성코테파이썬준비
  • c++ 빌더 패턴
  • MA모형
  • 백준파이썬풀이
  • Arima
  • 시계열분석
  • 통계학
  • 삼성코테파이썬
  • c++디자인패턴
  • BOJ파이썬풀이
  • 시계열
  • 데이터분석
  • 운영체제인터럽트
  • 삼성코테자바풀이
  • 삼성코테구현풀이
  • 카카오코테
  • 카카오코테java풀이
  • 코테파이썬
  • AR모형
  • SW역량테스트파이썬풀이
  • 삼성코테파이썬풀이
  • 삼성코테기출자바풀이
  • SW역량테스트파이썬
  • 통계분석
  • 삼성코테자바준비
  • ARIMA모형
  • 삼성코테구현문제추천
  • 삼성코테기출

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
developer-ellen

인간 디버거의 로그 찍기

프로그래밍공부/Vue

Vue Template Syntax

2022. 5. 16. 01:15

Vue Template Syntax

 

1. Template Syntax

  • Vue.js에서 렌더링 된 DOM을 기본 Vue 인스턴스의 데이터에 선언적으로 바인딩 할 수 있는 HTML 기반 템플릿 구문 사용

 

2. Interpolation(보간법)

 

1) 보간법 (Interpolation) - Text(문자열)

  • 데이터 바인딩의 가장 기본 형태이며 "Mustache" 구문, (이중 중괄호)을 사용한 텍스트 보간법이다.
<span> 메시지 : {{ msg }} </span>
  • Mustache 태그는 데이터 객체의 msg 속성 값으로 대체 ( 해당 값이 변경되면 대체)
  • v-once 디렉티브를 사용하여 데이터 변경 시 업데이트 되지 않는 일회성 보간을 수행한다.
<span v-once>다시는 변경하지 않습니다. {{ msg }} </span>

 

2) 보간법 (Interpolation) - Raw HTML (원시 HTML)

  • 이중 중괄호는 HTML는 아닌 일반 텍스트로 해석하며 실제 HTML을 출력하기 위해서 v-html 디렉티브 사용
  • 웹사이트에서 임의의 HTML을 동적으로 렌더링하려면 XSS 취약점으로 쉽게 이어질 수 있어 매우 위험할 수 있음. 따라서 신뢰할 수 있는 콘텐츠에서만 HTML 보간법을 사용해야 함.
<p>Using mustaches: {{ rawHtml }}</p>
<p>Using v-html directive: <span v-html="rawHtml"></span></p>

 

3) 보간법 (Interpolation) - JavaScript 표현식 사용

  • Vue.js는 모든 데이터 바인딩 내에서 JavaScript 표현식의 모든 기능을 지원
{{ number+1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}

<div v-bind:id="'list-' + id"></div>


// 한가지 제한 사항은 각 바인딩에 하나의 단일 표현식만 포함될 수 있음
// 아래처럼 작성하면 안됨

<!-- 아래는 구문이며, 표현식이 아님 -->
{{ var a = 1 }}
<!-- 조건문은 작동되지 않음. 삼항 연산자를 활용해야함 -->
{{ if (ok) { return message } }}

 

 

3. Directive (디렉티브)

  • v- 접두사가 있는 특수 속성
  • 속성값은 단일 Javascript 표현식이 되며 v-for는 예외
  • 역할은 표현식의 값이 변경될 때 사이드 이펙트를 반응적으로 DOM에 적용
v-text v-else-if v-slot
v-html v-for v-pre
v-show v-on v-cloak
v-if v-bind v-once
v-else v-model  

 

 

1) Directive (디렉티브) : v-text

  • 엘리먼트의 textContext를 업데이트
  • 일부를 갱신해야 한다면 {{ }} 을 사용해야함
<span v-text="msg"></span>
<!-- 위와 같음 -->
<span>{{ msg }} </span>

 

2) Directive (디렉티브) : v-bind

  • HTML 요소의 속성에 Vue 상태 데이터를 값으로 할당
  • Object 형태로 사용하면 value가 true인 key가 class 바인딩 값으로 할당
<a v-bind:href="url">...</a>

<!-- 약어 사용 -->
<a :href="url">...</a>

 

3) Directive (디렉티브) : v-model

  • HTML form 요소의 input 엘리멘트 또는 컴포넌트에 양방향 바인딩 처리
  • 수식어
    • .lazy : input 대신 change 이벤트 이후에 동기화
    • .number : 문자열을 숫자로 변경
    • .trim : 입력에 대한 trim 진행
  • form 엘리먼트 초기 'value'와 'checked', 'selected' 속성을 무시함

 

4) Directive (디렉티브) : v-show

  • 조건에 따라 엘리먼트를 화면에 표시
  • 항상 렌더링 되고 DOM에 남아 있음
  • 단순히 엘리먼트에 display CSS 속성을 토글하는 것
  • 조건이 바뀌면 트랜지션이 호출됨
<h1 v-show="ok">Hello ! </h1>

 

5) Directive (디렉티브) : v-if, v-else-if, v-else

  • 표현식 값의 참 거짓을 기반으로 엘리먼트를 조건부 렌더링함
  • 엘리먼트 및 포함된 디렉티브/컴포넌트는 토글하는 동안 삭제되고 다시 작성됨
  • <template> 엘리먼트를 이용하여 v-if 사용가능, 최종 결과는 <template> 엘리먼트를 포함하지 않음
<span v-if="age < 10">무료</span>
<span v-else-if="age < 20">7000원</span>
<span v-else-if="age < 65">10000원</span>
<span v-else>3000원</span>

 

6) Directive (디렉티브) : v-for

  • 원본 데이터를 기반으로 엘리먼트 또는 템플릿 블록을 여러 번 렌더링
  • 디렉트리브의 값은 반복되는 현재 엘리먼트에 대한 별칭을 제공하기 위해 alias in expression을 사용함
  • 또는 인덱스(아니면 객체의 경우 키)의 별칭 사용 가능
  • v-for의 기본 동작은 엘리먼트를 이동하지 않고 그 자리에서 패치 시도, 강제로 엘리먼트의 순서를 바꾸려면 특수 속성 key 설정
  • v-if와 함께 사용할 경우 v-for는 v-if보다 높은 우선순위를 갖음. 따라서 되도록 같이 작성하는 것을 피해야 함
<div v-for="item in items">
	{{ item.text }}
</div>

<!-- 인덱스 or 객체의 키 사용 -->
<div v-for="(item, index) in items"></div>
<div v-for="(val, key) in object"></div>
<div v-for="(val, name, index) in object"></div>

<div v-for="item in items" :key="item.id">
	{{ item.id }}
</div>

 

7) Directive (디렉티브) : v-on

  • 엘리먼트에 이벤트 리스너를 연결
  • 이벤트 유형은 전달인자로 표시
  • 약어를 제공하여 v-on:click === @click
<div id="example">
	<button v-on:click="counter += 1">Add 1</button>
	<p> 위 버튼을 클릭한 횟수는 {{ counter }} 번입니다. </p>
</div>

 

8) Directive (디렉티브) : v-cloak

  • Vue Instance가 준비될 때까지 Mustache 바인딩을 숨기는 데 사용
  • [v-clock] { display : none }과 같이 CSS 규칙과 함께 사용
  • Vue Instance가 준비되면 v-cloak는 제거됨

 

'프로그래밍공부 > Vue' 카테고리의 다른 글

npm으로 라이브러리 충돌시 해결방법  (0) 2022.05.24
ES6  (0) 2022.05.16
Vue.js란 ?  (0) 2022.05.15
    '프로그래밍공부/Vue' 카테고리의 다른 글
    • npm으로 라이브러리 충돌시 해결방법
    • ES6
    • Vue.js란 ?
    developer-ellen
    developer-ellen

    티스토리툴바