본문 바로가기
WEB/Vue.js

003. 뷰 컴포넌트(Component)

by hyun-am 2019. 11. 21.

컴포넌트란?

 

컴포넌트란 조합하여 화면을 구성할 수 있는 블록입니다.

화면의 영역을 컴포넌트로 쪼개서 재활용할 수 있는 형태로 관리합니다.

코드를 재사용하기 편리합니다.

컴포넌트 간의 관계는 자료구조의 트리(Tree)모양과 유사합니다.

 

지역 컴포넌트 vs 전역 컴포넌트

 

지역컴포넌트

 

특정 인스턴스에서만 유효한 범위를 갖습니다.

 

전역 컴포넌트

 

여러 인스턴스에서 공통으로 사용할 수 있습니다.

뷰로 접근 가능한 모든 범위에서 사용할 수 있습니다.

 

컴포넌트 등록하기

 

전역컴포넌트

 

Vue 변수를 이용하여 등록합니다.

Vue.component( )를 호출하여 수행합니다. 

 

형식은 아래와 같습니다. 

<body>
	<h5>전역 컴포넌트 표시</h5>
	<my-component></my-component>
</body>


<script>
	// 전역 컴포넌트 등록
	Vue.component('my-component',{
    	template : '<div>전역 컴포넌트가 등록되었습니다.!</div>'
    });
    
</script>

 

전역 컴포넌트를 활용한 예시 코드

 

<!DOCTYPE html>
<html lang="kr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>vue component</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <button>컴포넌트 등록</button>
        <my-component></my-component>
    </div>
    <script>
        Vue.component('my-component',{
            template : "<div>전역 컴포넌트가 등록되었습니다.</div>",
        });

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

 

지역 컴포넌트

 

인스턴스에 components속성을 추가합니다.

컴포넌트 이름, 내용 등록

 

형식은 아래와 같습니다.

<body>
    <div id = "app">
    <h3>지역 컴포넌트 표시</h3>
    <local-component></local-component>
</body>
<script>
	// 지역 컴포넌트 등록
	var cmp = {
    	template : '<div> 지역 컴포넌트가 등록되었습니다.</div>'
    }
    
    new Vue({
        el : "#app",
        components : {
            'local-component':cmp
        }
    });
</script>

 

지역 변수를 활용한 예제 코드

 

<!DOCTYPE html>
<html lang="kr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>vue component</title>
    
</head>
<body>
    <div id="app">
        <button>컴포넌트 등록</button>
        <my-local-component></my-local-component>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>

        var cmp = {
            // 컴포넌트 내용
            template: '<div>지역 컴포넌트가 등록되었습니다.!</div>'

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

 

전역 컴포넌트와 지역 컴포넌트 차이를 보기 위한 코드 

 

<!DOCTYPE html>
<html lang="kr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>vue component</title>
    
</head>
<body>
    <div id="app">
        <button>컴포넌트 등록</button>
        <my-local-component></my-local-component>
        <my-global-component></my-global-component>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/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>

 

 

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

004. 상 하위 컴포넌트 관계  (0) 2019.11.21
002. Vue의 라이프 싸이클  (0) 2019.11.21
001. Vue.js CDN을 통해 Vue.js 체험 및 뷰 속성 개념  (0) 2019.11.21
000. Vue.js란?  (1) 2019.11.20

댓글