유블로그

[Vuejs] template(템플릿) 본문

Vuejs

[Vuejs] template(템플릿)

yujeong kang 2020. 11. 23. 00:43

- 보간법

  - 문자열

  • Mustache 구문(이중 중괄호 {{  }} ) 사용한 텍스트 보간
  • v-once 속성을 이용하면 데이터 변경 시 업데이트 되지 않는 일회성 보간을 수행한다.
  <body>
    <div id="app">
      <h2>{{ msg }}</h2>
      <h2 v-once>{{ msg }}</h2> <!-- 여기는 처음에 한 번만 설정하는 거니까 값이 안 바뀜~!-->
    </div>
    <script>
      new Vue({
        el: '#app',
        data() {
          return {
            msg: 'hello ~!',
          };
        },
      });
    </script>
  </body>

 

  • {{ }} 는 HTML이 아닌 일반 텍스트로 데이터를 해석한다.
  • 실제 HTML을 출력하려면 v-html 디렉티브를 사용한다.
    <div id="app">
        <h2>{{ msg }}</h2>
        <h2 v-text="'v-text : ' + msg"></h2>
        <h2 v-html="'v-html : ' + msg"></h2>
    </div>

 

  • vuejs는 {{ }} 내에서 자바스크립트 표현식의 모든 기능을 지원한다.
<div>{{message + ' Vue~'}}</div>
<div>{{num > 10 ? num * num : num + 100}}</div>
<div>{{message.split("").reverse().join("")}}</div>
<div>{{ changeMsg('Gooood') }}</div>
<div v-text="message + ' Vue~'"></div>
<div v-text="num > 10 ? num * num : num + 100"></div>
<div v-text="message.split('').reverse().join('')"></div>

* v-text는 {{ }}와 같다.

 


- 디렉티브

디렉티브 설명
v-text  
v-bind 엘리먼트 속성과 바인딩 처리를 위해서 사용. 
약어로 ":" 사용 가능!!!!
v-html  
v-once  
v-model 양방향 바인딩 처리를 위해서 사용 (form 의 input, textarea ... )
v-show 조건에 따라 엘리먼트를 화면에 렌더링.
style의 display 변경하는 역할.
ex) vue 객체의 data에 isShow: false, 하고 template 내에서 <div v-show:"isShow"></div> 하면 요소 display: none; 과 같은 역할이다.
v-if, v-else-if, v-else 조건에 따라 엘리먼트를 화면에 렌더링.
ex) <span v-if="age < 10"> 무료 </span>
v-for 배열이나 객체의 반복에 사용
v-for="요소변수이름 in 배열" v-for="(요소변수이름,인덱스) in 배열"
v-cloak vue instance가 준비될 때까지 {{ }} 를 숨긴다. [v-cloak] {display:none;}과 같은 CSS 규칙과 함께 사용한다.
뷰 인스턴스가 준비되면 v-cloak 은 제거된다.
v-on 이벤트리스너와 같은 역할을 한다. "@"와 같다.

 

  • template

: 여러 개의 태그들을 묶어서 처리해야할 경우 사용한다. v-if , v-for, component 등과 함께 많이 사용한다.

 

  • v-show와 v-id 차이점
  v-if v-show
렌더링 false일 경우 X 항상 O
false일 경우 엘리먼트 삭제 display: none 적용
template 지원 O X
v-else 지원 O X

 

 

 

'Vuejs' 카테고리의 다른 글

[Vuejs] vue-router  (0) 2020.11.23
[Vuejs] HTTP 통신 : axios  (0) 2020.11.23
[Vuejs] Component & Event  (0) 2020.11.23
[Vuejs] Vue Instance 속성  (0) 2020.11.23
[Vuejs] Vue Instance  (0) 2020.11.23