Vue.js - 컴포넌트

YuJin Lee·2020년 10월 8일
0

Vue.js

목록 보기
3/6
post-thumbnail

컴포넌트
화면의 영역을 구분하여 개발할 수 있는 뷰의 기능.
컴포넌트 기반으로 화면을 개발하면 코드의 재사용성이 올라가고 빠르게 화면을 제작할 수 있다.

전역 컴포넌트 생성 코드
모든 인스턴스 내에서 컴포넌트를 사용할 수 있다.
인스턴스마다 컴포넌트를 등록할 필요가 없다.

Vue.component('컴포넌트 이름', 컴포넌트 내용);

예시

<div id="app">
    /* 여기에 컴포넌트 이름을 태그로 넣어준다. */
    <app-header></app-header>
    <app-content></app-content>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>

    // 전역 컴포넌트 등록
    Vue.component('app-header', {
      template: '<h1>Header</h1>'
      // 컴포넌트가 표현되는 마크업이나 스타일
    });
    Vue.component('app-content', {
      template: '<div>content</div>'
    })

    // 인스턴스 등록
    // 인스턴스가 Root가 된다.
    new Vue({
      el: '#app',
    });
    
</script>

지역 컴포넌트 생성 코드
인스턴스의 components 속성을 사용하여 생성해준다.
해당 인스턴스 내에서만 컴포넌트를 사용할 수 있다.
대부분의 서비스는 이 방식으로 컴포넌트를 추가한다.

new Vue({
	el: '#app',
  	components: {
    	'컴포넌트 이름': 컴포넌트 내용,
    }
})

예시

new Vue({
      el: '#app',
      components: {
        'app-footer': {
          template: '<footer>footer</footer>'
        }
      }
});

결과


전역 컴포넌트와 지역 컴포넌트의 차이

<div id="app">
  <app-header></app-header>
  <app-footer></app-footer>
</div>

<div id="app2">
  <app-header></app-header>
  <app-footer></app-footer>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>

  // 전역 컴포넌트
  Vue.component('app-header', {
  template: '<h1>Header</h1>'
});

new Vue({
  el: '#app',
  // 지역 컴포넌트
  components: {
    'app-footer': {
      template: '<footer>footer</footer>'
    }
  }
});

// 새로운 인스턴스 생성
new Vue({
  // 다른 요소를 el로 지정해준다.
  el: '#app2'
})
</script>

결과

전역 컴포넌트인 app-header는 el이 #app2인 인스턴스에서도 나타나지만
지역 컴포넌트인 app-footer는 해당 el이 #app인 인스턴스에만 나타난다.

profile
배운 것을 기록하는 곳 💻🙂

0개의 댓글