723poil
723poil
723poil
전체 방문자
오늘
어제
  • 분류 전체보기 (13)
    • HTML (2)
    • Javascript (3)
    • Vue.js (4)
    • 데이터베이스 (0)
    • PHP (0)
    • 코딩 문제 풀이 (2)
      • 백준 (0)
      • 프로그래머스 (2)
    • 나작프 (2)
      • Calendar(일정관리) (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
723poil

723poil

Vue.js

[Vue.js] 입문 - 뷰 컴포넌트

2022. 2. 21. 16:20

뷰 컴포넌트

컴포넌트는 조합하여 화면을 구성할 수 있는 블록을 의미합니다.
컴포넌트를 활용하면 화면을 빠르게 구조화하여 일괄적인 패턴으로 개발할 수 있고, 나중에 코드를 다시 사용하기 수월해 집니다.

 

전역 컴포넌트 등록

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

전역 컴포넌트는 뷰 라이브러리를 로딩하고 나면 접근 가능한 Vue 변수를 이용하여 등록합니다.

 

<html>
	<body>
    	<div id="app">
            <button>컴포넌트 등록</button>
            <my-component></my-component> <!--전역 컴포넌트 표시-->
        </div>
     	<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
        <script>
        	Vue.component('my-component', { // 전역 컴포넌트 등록
                template: '<div>전역 컴포넌트가 등록되었습니다!</div>'
            });

            new Vue({
                el: '#app'
            });
        </script>
    </body>
</html>

 

 

 


지역 컴포넌트 등록

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

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

 

<html>
	<body>
    	<div id="app">
            <button>컴포넌트 등록</button>
            <my-local-component></my-local-component> <!--지역 컴포넌트 표시-->
        </div>
     	<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
        <script>
        	var cmp = { // 컴포넌트 내용
                template: '<div>지역 컴포넌트가 등록되었습니다!</div>'
            };

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

 

 

 


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

<html>
	<body>
    	<div id="app">
            <my-global-component></my-global-component> <!--전역 컴포넌트 표시-->
            <my-local-component></my-local-component> <!--지역 컴포넌트 표시-->
        </div>
     	<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
        <script>
            Vue.component('my-global-component', { // 전역 컴포넌트 등록
                template: '<div>전역 컴포넌트입니다.</div>'
            });

        	var cmp = { // 지역 컴포넌트 내용
                template: '<div>지역 컴포넌트입니다.</div>'
            };

            new Vue({
                el: '#app',
                // 지역 컴포넌트 등록
                components: {
                    'my-local-component': cmp
                }
            });
        </script>
    </body>
</html>

전역과 지역 컴포넌트를 넣은 상태입니다.

지금 결과로만 봐서는 전역과 지역 컴포넌트의 차이를 이해하기 힘드실텐데,

다음 코드로 차이를 한번 알아봅시다.

 

<html>
	<body>
    	<div id="app">
            <my-global-component></my-global-component> <!--전역 컴포넌트 표시-->
            <my-local-component></my-local-component> <!--지역 컴포넌트 표시-->
        </div>
        <hr>
        <div id="app2">
            <my-global-component></my-global-component> <!--전역 컴포넌트 표시-->
            <my-local-component></my-local-component> <!--지역 컴포넌트 표시-->
        </div>
     	<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
        <script>
            Vue.component('my-global-component', { // 전역 컴포넌트 등록
                template: '<div>전역 컴포넌트입니다.</div>'
            });

        	var cmp = { // 지역 컴포넌트 내용
                template: '<div>지역 컴포넌트입니다.</div>'
            };

            new Vue({
                el: '#app',
                // 지역 컴포넌트 등록
                components: {
                    'my-local-component': cmp
                }
            });

            new Vue({
                el: '#app2'
            });
        </script>
    </body>
</html>

위와 같이 전역 컴포넌트는 두 인스턴스에 전부 출력이 되지만,

지역 컴포넌트는 id가 app인 인스턴스에만 등록하였으므로 지역컴포넌트는 한 곳만 출력이 되신것을 볼 수 있습니다.

'Vue.js' 카테고리의 다른 글

[Vue.js] 입문 - 뷰 컴포넌트 통신  (0) 2022.02.22
[Vue.js] 입문 - 뷰 인스턴스  (0) 2022.02.21
[Vue.js] 입문 - 개발 환경 설정하기  (0) 2022.02.18
    'Vue.js' 카테고리의 다른 글
    • [Vue.js] 입문 - 뷰 컴포넌트 통신
    • [Vue.js] 입문 - 뷰 인스턴스
    • [Vue.js] 입문 - 개발 환경 설정하기
    723poil
    723poil
    공부한 내용들을 정리하기 위해 만든 블로그입니다.

    티스토리툴바