몽땅뚝딱 개발자

[Vue.js] 디렉티브(Directive) - (2) 본문

Development/Vue.js

[Vue.js] 디렉티브(Directive) - (2)

레오나르도 다빈츠 2022. 1. 6. 14:36

 

두번째 포스팅은.. 내가 한번도 사용해 본적이 없는 Directive이기 때문에 직접 사용해보고 올리는 사용기이다.

v-slot은 설명을 읽어도 이해가되지않아서 이 포스팅이 굉장히 미뤄지고 있었는데, 직접 프로젝트를 구현해서 사용해보다 망치로 머리를 맞은 듯 깨달았다.

'그냥 컴포넌트로 쓰지 왜 슬롯을 쓰는거야?' 하다가 '슬롯 진짜 편하다!'로 끝난 여정이었다.

 

 




v-slot

슬롯을 여러개 사용하는 경우 슬롯의 이름을 지정해주면 각각의 위치에 들어간다.

<template>
  <div class="c-prodlist-wrap">
    <slot name="title"></slot>
    <div class="prodlist">
      <c-prod
        v-for="item in prodlist"
        :key="item.prodcode"
        :prod="item"
      ></c-prod>
    </div>
    <slot name="more-btn"></slot>
  </div>
</template>
<template>
  <article class="newprod-wrap">
    <c-prodlist :isInfinite="false" :prodlist="rcmnProdlist">
      <div slot="title" class="title">
        <p class="subtitle">추천 신규 테마</p>
        <h3 class="maintitle">달력/다이어리</h3>
      </div>
      <button slot="more-btn" class="more-btn">더 보기</button>
    </c-prodlist>
  </article>
</template>


 


◽ v-pre
이 엘리먼트와 모든 하위 엘리먼트에 대한 컴파일을 건너 뛴다.

컴파일의 속도를 높이기 위해 사용한다.

<div v-pre>
	<p>{{ 이 곳은 컴파일을 건너 뛴다. }}</p>
</div>

 



◽ v-cloak
{ display: none }의 규칙이 적용된 디렉티브이다.

컴포넌트 인스턴스가 준비될 때 까지 컴파일 되지않은 {{ }} 모양의 바인딩을 숨긴다.

<div v-cloak>
	<!-- 이 부분은 컴파일이 완료될 때 까지 표시되지 않는다. -->
	{{ message }}
</div>



◽ v-once
엘리먼트와 컴포넌트를 한번(once)만 렌더링한다.
재렌더링 할 때는 해당 디렉티브가 붙은 엘리먼트/컴포넌트/하위 엘리먼트들은 정적 컨텐츠로 처리되고 건너 뛴다.
이걸 왜 쓸까? 업데이트 성능을 최적화 할 때 사용한다.

 

 

 

출처

https://vuejs.org/v2/api/#v-pre

 

 

 


개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.

 

 

Comments