본문 바로가기

Vue.js

[Vue js] Vue 컴포넌트 ( component ) ?

Vue 컴포넌트란?


Vue 공식 문서에는 아래와 같이 정의 합니다.

 

- 컴포넌트는 Vue의 가장 강력한 기능 중 하나이다.

- 기본 HTML 엘리먼트를 확장하여 재사용 가능한 코드를 캡슐화하는 데 도움이 된다.

- 상위 수준에서 컴포넌트는 Vue의 컴파일러에 의해 동작이 추가된 사용자 지정 엘리먼트이다.

- 경우에 따라 특별한 is 속성으로 확장 된 원시 HTML 엘리먼트로 나타날 수도 있다.

- Vue 컴포넌트는 Vue 인스턴스이기도 하다. 그러므로 모든 옵션 객체를 사용할 수 있다.

 

 

쉽게 말해 특정 HTML태그를 만들어 동적으로 해당 부분만 변화를 주어 브라우저에 나타낼 수 있게 도와주는 것입니다.

 

 

 

 

 

Vue 컴포넌트 사용방법


Vue 컴포넌트 사용 방법은 두 가지가 있습니다.

 

첫번째로는

# 전역 등록하여 사용하기,

 

두번째로는

# 지역 등록하여 사용하기 입니다.

 

 

1. 전역 등록

 

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

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

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

        new Vue({
            el:'#app',
        });

    </script>
</body>

 

 

2. 지역 등록

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

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

    <script>
        new Vue({
            el:'#app',
            // 지역 컴포넌트 등록 방식
            components:{
                // '컴포넌트 이름 ' : '컴포넌트 내용',
                'app-footer' : {
                    template : '<footer>footer</footer>'
                }
            }
        });
    </script>
</body>

 

 

 

 

 

전역등록과 지역등록의 차이점


전역등록과 지역등록은 전역변수, 지역변수와 똑같이 동작한다고 보시면 됩니다.

 

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

    <div id="app2">
        <app-header></app-header>
        <app-footer></app-footer>
    </div>
        Vue.component('app-header', {
            template : '<h1>Header</h1>'
        });

        new Vue({
            el:'#app',
        });

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

 

 

이처럼 사용한다면 아래와 같은 결과로 app2와 달리 app은 footer가 적용되지 않는 모습을 볼 수 있습니다.

 

Header    ----- app   결과

Header    ----- app2 결과

footer

 

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

[Vue js] i18n 을 이용하여 다국어 설정  (0) 2023.05.05
[Vue js] Vue emit 부모 컴포넌트로 데이터 보내기  (0) 2023.04.12
[Vue js] Vue Props  (0) 2023.04.12
[Vue] Vue methods 사용법  (1) 2023.04.06
[Vue js] Vue js 시작하기  (0) 2023.04.05