본문 바로가기
Javascript/vue

Vue3 앱 시작하기. createApp 함수의 기능과 사용법

by 노마드 산코디 2023. 9. 18.
728x90

Vue3 앱 시작하기. createApp 함수의 기능과 사용법

 

 

 

안녕하세요!

오늘은 Vue3의 createApp 함수에 대한 내용을 주제로 포스팅하려고 합니다. Vue 3의 핵심 기능 중 하나인 createApp 함수는 애플리케이션을 생성하고 초기 설정을 담당합니다. 애플리케이션의 시작점을 정의하며 컴포넌트 등록, 전역 설정 및 초기화 과정을 담당하는 이 함수에 대해 자세히 살펴보도록 하겠습니다. 이를 통해 Vue 3 앱의 구조와 동작 방식을 더 잘 이해하실 수 있을 것입니다.









createApp 함수의 소개


createApp 함수는 Vue 3에서 도입된 함수로, Vue 애플리케이션을 생성하고 초기 설정을 담당하는 역할을 합니다. 이 함수를 사용하면 Vue 앱을 구성하는 초기 단계를 보다 명확하게 제어하고, 애플리케이션의 루트 컴포넌트와 DOM 연결, 전역 설정 등을 조작할 수 있습니다.


 

  • 애플리케이션 생성
    createApp 함수는 Vue 3 애플리케이션을 생성하는 데 사용됩니다. 이 함수를 호출하여 앱의 시작점을 설정하고 애플리케이션을 구성할 수 있습니다.

  • 루트 컴포넌트 등록
    createApp 함수 내에서 component 메서드를 사용하여 루트 컴포넌트를 등록할 수 있습니다. 이 루트 컴포넌트는 애플리케이션의 최상위 컴포넌트가 되며, 앱의 모든 컴포넌트는 이 루트 컴포넌트 아래에 계층화됩니다.

  • DOM 요소 마운트
    createApp 함수로 생성한 애플리케이션을 mount 메서드를 사용하여 특정 DOM 요소에 마운트할 수 있습니다. 이를 통해 앱의 컴포넌트 트리가 실제 DOM에 렌더링되어 사용자에게 보여집니다.

  • 전역 설정 및 플러그인 사용
    createApp 함수 내에서 use 메서드를 사용하여 전역적으로 플러그인을 등록하거나, 애플리케이션의 전역 설정을 변경할 수 있습니다. 이를 통해 앱 전체에서 공통된 동작이나 기능을 추가할 수 있습니다.

  • 컴포넌트 초기화
    createApp 함수 내에서 setup 함수를 사용하여 컴포넌트의 초기 상태와 로직을 설정할 수 있습니다. Composition API를 활용하여 컴포넌트 내의 데이터와 메서드를 구조화할 수 있습니다.

  • 템플릿과 컴포지션 API
    createApp 함수를 사용하면 기존의 템플릿 문법과 더불어 Composition API를 활용한 개발도 가능합니다. 이를 통해 더 모듈화된 코드를 작성하고 코드 재사용성을 높일 수 있습니다.



createApp 함수는 Vue 3 애플리케이션을 생성하고 구성하는 핵심적인 함수로, 앱의 시작점을 설정하고 전역 설정을 변경하며 컴포넌트를 등록하고 초기화하는데 사용됩니다. 이 함수를 통해 앱의 구조와 동작을 조작하고 개발할 수 있습니다.



 

 


createApp 함수의 사용법


1. createApp 함수 호출
Vue 애플리케이션을 생성하기 위해 createApp 함수를 호출합니다. 이 함수는 Vue 앱을 생성하고 반환합니다.

const app = createApp();




2. 루트 컴포넌트 등록
component 메서드를 사용하여 루트 컴포넌트를 등록합니다. 이 컴포넌트는 애플리케이션의 시작점이 됩니다.

app.component('app-root', AppRootComponent);




3. 전역 플러그인 등록
use 메서드를 사용하여 전역적으로 사용할 플러그인을 등록합니다.

app.use(VueRouter);
app.use(Vuex);




4. 전역 설정 변경
app.config 객체를 사용하여 애플리케이션의 전역 설정을 변경할 수 있습니다.

app.config.productionTip = false;




5. 컴포넌트 초기화
setup 함수를 사용하여 컴포넌트의 초기 상태와 로직을 설정합니다. 이 함수는 Composition API를 사용합니다.

app.component('user-profile', {
  setup() {
    const user = reactive({ name: 'John', age: 30 });
    return { user };
  }
});




6. 애플리케이션 마운트
mount 메서드를 사용하여 애플리케이션을 실제 DOM에 마운트합니다.

app.mount('#app');




7. 컴포넌트 통신
컴포넌트 간 데이터 통신을 위해 props, emits, provide, inject 등을 활용할 수 있습니다.

app.component('child-component', {
  props: ['message'],
  template: '<div>{{ message }}</div>'
});




createApp 함수를 사용하여 Vue 3 애플리케이션을 구성할 때, 루트 컴포넌트 등록, 플러그인 사용, 초기 설정 변경, 컴포넌트 초기화 등을 순서대로 수행하여 앱을 개발하게 됩니다. 이를 통해 Vue 앱을 원하는대로 구성하고 초기화할 수 있습니다.










createApp 옵션

 

  • data
    컴포넌트 내에서 사용할 초기 데이터를 설정합니다. 함수로 설정하면 각 인스턴스에 대해 새로운 데이터 객체가 생성됩니다.

  • props
    부모 컴포넌트로부터 전달받을 속성을 정의합니다. 배열로 속성 이름을 나열하거나 객체로 기본값과 타입을 설정할 수 있습니다.

  • computed
    계산된 속성을 정의합니다. 데이터의 종속성에 따라 자동으로 업데이트됩니다.

  • methods
    컴포넌트 내에서 사용할 메서드를 정의합니다. 이벤트 핸들러나 다른 로직을 포함할 수 있습니다.


  • watch
    데이터의 변화를 감시하고 그에 따라 콜백을 실행하는 옵션입니다.

  • setup
    Composition API를 사용하여 컴포넌트의 상태와 로직을 정의합니다.

  • template
    컴포넌트의 템플릿을 정의합니다. HTML 코드와 Vue 템플릿 문법을 포함할 수 있습니다.

  • components
    로컬 컴포넌트를 등록합니다. 다른 컴포넌트 내에서 사용할 수 있도록 합니다.


  • directives
    로컬 디렉티브를 등록합니다. 커스텀 디렉티브를 정의하여 DOM 조작을 수행할 수 있습니다.


  • filters
    컴포넌트 내에서 사용할 필터를 정의합니다. 데이터를 형식화하거나 조작하는 데 사용됩니다.


  • mixins
    다른 컴포넌트의 옵션을 재사용하기 위해 믹스인을 등록합니다.


  • extends
    다른 컴포넌트를 확장하여 새로운 컴포넌트를 생성합니다.


  • provide / inject
    부모 컴포넌트에서 제공하는 데이터를 자식 컴포넌트에서 주입받는 옵션입니다.

  • beforeCreate, created, beforeMount, mounted, beforeUpdate, updated, beforeUnmount, unmounted
    라이프사이클 훅을 정의하여 특정 시점에서 로직을 실행합니다.


  • inheritAttrs
    부모 컴포넌트의 속성을 상속받을지 여부를 결정합니다.


  • emits
    컴포넌트가 내보내는 이벤트를 정의하고 이벤트명과 매핑되는 메서드를 설정합니다.


  • render
    렌더링 함수를 정의하여 컴포넌트의 렌더링 로직을 작성할 수 있습니다.

 

createApp 함수를 사용하여 컴포넌트를 생성할 때 이러한 옵션을 활용하여 컴포넌트의 동작을 정의하고 구성할 수 있습니다. 이를 통해 Vue 3 앱을 원하는대로 조작하고 구성할 수 있습니다.

 






createApp 함수의 예제


1. HTML 파일에 마운트할 DOM 요소 추가

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue App</title>
</head>
<body>
    <div id="app"></div>
    <script src="main.js"></script>
</body>
</html>


2. main.js 파일에 Vue 앱 생성 및 루트 컴포넌트 등록

// main.js
import { createApp } from 'vue';
import App from './App.vue'; // 루트 컴포넌트

const app = createApp(App); // 앱 생성 및 루트 컴포넌트 등록
app.mount('#app'); // 앱 마운트



3. App.vue 파일에 루트 컴포넌트 작성

<!-- App.vue -->
<template>
    <div>
        <h1>{{ message }}</h1>
        <button @click="changeMessage">Change Message</button>
    </div>
</template>

<script>
export default {
    data() {
        return {
            message: 'Hello, Vue!'
        };
    },
    methods: {
        changeMessage() {
            this.message = 'Message Changed!';
        }
    }
};
</script>

<style>
h1 {
    color: blue;
}
</style>


위의 예제에서는 간단한 Vue 3 앱을 생성하고, 루트 컴포넌트로 App.vue 파일을 등록합니다. App.vue 파일에서는 화면에 메시지와 버튼을 렌더링하며, 버튼 클릭 시 메시지가 변경되도록 설정되어 있습니다.


이렇게 createApp 함수와 함께 루트 컴포넌트를 등록하고 마운트하여 Vue 3 앱을 개발할 수 있습니다.









createApp 함수 사용 시 주의사항


1. Vue 버전 호환성
createApp 함수는 Vue 3 이상에서 사용 가능합니다. Vue 2에서는 new Vue()를 사용해야 합니다.

2. 전역 설정 변경 주의
app.config 객체를 사용하여 전역 설정을 변경할 수 있지만, 실수로 덮어쓰지 않도록 주의해야 합니다.

3. 컴포넌트 이름 중복
컴포넌트를 등록할 때, 중복된 이름을 사용하면 덮어쓰여질 수 있습니다. 고유한 이름을 사용하거나 네임스페이스를 활용하세요.

4. 전역 플러그인 사용시 순서
전역 플러그인을 등록할 때, 사용하는 플러그인의 순서를 주의해야 합니다. 플러그인 간의 의존성이 있는 경우 순서가 중요할 수 있습니다.

5. Composition API 사용 주의
Composition API는 Vue 3에서 새로 도입된 기능이며, 일부 기존 코드와 호환되지 않을 수 있습니다. 주의해서 사용하고 기존 코드를 업데이트해야 할 수도 있습니다.

6. 라이프사이클 훅 변경
Vue 3에서 라이프사이클 훅의 이름과 동작이 변경되었습니다. Vue 2와 차이점을 숙지하고 사용해야 합니다.

7. 기존 플러그인 호환성
기존 Vue 2 플러그인이 Vue 3에서 동작하지 않을 수 있습니다. 플러그인의 업데이트나 대체가 필요할 수 있습니다.

8. 타입스크립트 사용시 타입 정의
타입스크립트를 사용할 때, 컴포넌트나 플러그인의 타입 정의를 잘 활용하여 타입 안정성을 유지하세요.

9. 시작점 설정
mount 메서드를 호출하여 애플리케이션을 마운트할 때, HTML 파일의 DOM 요소가 존재해야 합니다.

10. 에러 처리
앱을 개발할 때 예기치 않은 에러가 발생할 수 있습니다. 에러 핸들링을 잘 구현하여 앱이 예외 상황에서도 안정적으로 동작하도록 해야 합니다.







 


최종 정리

오늘은 Vue 3의 핵심적인 기능 중 하나인 createApp 함수에 대해 정리해 보았습니다. 이 함수는 Vue 애플리케이션을 생성하고 설정하며, 루트 컴포넌트를 등록하고 마운트하는 핵심적인 역할을 수행합니다. Vue 3에서 새롭게 도입된 Composition API와 함께 사용하여 컴포넌트 기능을 최적화하고 개발자 경험을 향상시킬 수 있습니다.

앱의 전역 설정 변경과 전역 플러그인 등록을 통해 앱 전체에 영향을 주는 설정을 변경할 수 있으며, 컴포넌트를 등록하여 앱의 구조를 형성하고 컴포넌트 간 통신을 할 수 있습니다. 마지막으로, 마운트 메서드를 호출하여 앱을 브라우저에 렌더링하고 사용자에게 보여주는 내용을 정리했습니다.



그럼 다음 포스팅에서도 Vue에 대한 다양한 주제로 정리해 보도록 하겠습니다.

감사합니다.

728x90
반응형