본문 바로가기
JS 프레임워크/Vue

뷰 컴포넌트

by 두리두리안 2021. 3. 31.

 

컴포넌트란?


컴포넌트란 조합하여 화면을 구성할 수 있는 블럭을 의미. 

컴포넌트를 활용하면 화면을 빠르게 구조화하여 일괄적인 패턴으로 개발 할 수 있다. 

 

 

컴포넌트 등록 


지역(local)컴포넌트는 특정 인스턴스에서만 유효한 범위를 갖고 전역(Global)컴포넌트는 여러 인스턴스에서 공통으로 사용

 

전역 컴포넌트 등록 코드

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>Vue Sample</title>
  </head>
  <body>
      <div id="app">
        <button>컴포넌트 등록</button>
        <my-component></my-component>
        <!-- 전역 컴포넌트 표시 -->
      </div>
      <script src="https://cdn.jsdelivr.net/npm/vue@2.5.2/dist/vue.js"></script>
      <script type="text/javascript">
        Vue.component('my-component', {
            template: '<div>전역 컴포넌트가 등록됨</div>'
        })
        // 전역 컴포넌트 등록
        
        new Vue({
          el: '#app',
        });
      </script>
  </body>
</html>

인스턴스가 생성되고, 인스턴스 내용이 화면요소로 변환될 때 컴포넌트 태그도 함께 변화된다. 

컴포넌트 태그에 정의한 컴포넌트 내용은 사용자가 사용자가 볼 수 있는 형태의 화면요소로 최종 변환. 

 

전역 컴포넌트를 등록하려면 HTML에서 사용할 태그 이름을 컴포넌트 이름으로 작성하고, 중괄호{}안에는 HTML태그가 실제로 화면에서 그려질 때 표시될 내용을 작성해야 한다. 

 

전역 컴포넌트가 생성되고 처리되는 과정은 다음과 같다.

 

뷰 라이브러리 파일 로딩

뷰 생성자로 컴포넌트 등록

Vue.component()

인스턴스 객체 생성

(옵션 속성 포함)

특정 화면 요소에 인스턴스 부착

인스턴스 내용 변환

(등록된 컴포넌트 내용도 변환)

변환된 화면 요소를 사용자가 최종 확인

 

전역 컴포넌트 등록 코드

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>Vue Sample</title>
  </head>
  <body>
      <div id="app">
        <button>컴포넌트 등록</button>
        
        <my-local-component></my-local-component>
      </div>
      <script src="https://cdn.jsdelivr.net/npm/vue@2.5.2/dist/vue.js"></script>
      <script type="text/javascript">

        var cmp = {
            // 컴포넌트 내용
            template: '<div>지역 컴포넌트가 등록</div>'
        }

        new Vue({
          el: '#app',
          components:{
            'my-local-component': cmp
          }
        });
      </script>
  </body>
</html>

지역 컴포넌트는 전역 컴포넌트와 다르게 인스턴스에 components 속성을 추가하고 등록할 컴포넌트 이름과 내용을 정의하면 된다.

지역 컴포넌트 또한 template, data, methods 등의 인스턴스 속성을 작성할 수 있다

 

※ Do it Vue.js를 개인적인 공부를 위해서 정리 한것 입니다. 

'JS 프레임워크 > Vue' 카테고리의 다른 글

[Vue] Vue 라우트  (0) 2021.04.06
뷰 컴포넌트 통신  (0) 2021.04.01
Vue 인스턴스  (0) 2021.03.31
Vue 환경설정 및 Hello world  (0) 2021.03.30
Vue JS란  (0) 2021.03.30