[javascript] Vue.js의 컴포넌트 개념

Vue.js는 웹 애플리케이션을 구성하는 작은 조각들인 컴포넌트를 사용하여 UI를 구축하는 JavaScript 프레임워크입니다. 컴포넌트는 독립적으로 동작하며 재사용할 수 있는 UI 요소입니다.

컴포넌트의 구조

Vue.js에서 컴포넌트는 다음과 같은 구조로 생성됩니다.

Vue.component('component-name', {
  // 컴포넌트의 옵션 설정
})

‘component-name’은 컴포넌트의 이름이며, 임의로 설정할 수 있습니다.

옵션은 컴포넌트의 동작을 정의하는 객체입니다. 옵션에는 컴포넌트의 데이터, 메서드, 라이프사이클 훅 등이 포함될 수 있습니다.

컴포넌트의 사용

컴포넌트를 사용하기 위해서는 Vue 인스턴스에서 해당 컴포넌트를 등록해야 합니다.

new Vue({
  el: '#app',
  components: {
    'component-name': ComponentName
  }
})

위 예시에서 ‘component-name’은 등록할 컴포넌트의 이름이며, ComponentName은 실제 컴포넌트 객체입니다.

컴포넌트를 사용하기 위해 HTML 템플릿에서 아래와 같이 태그를 사용할 수 있습니다.

<component-name></component-name>

컴포넌트간의 통신

컴포넌트는 다른 컴포넌트와 데이터를 주고받기 위해 프롭스(props)와 이벤트(events)를 이용합니다.

프롭스는 컴포넌트에게 전달되는 데이터입니다. 부모 컴포넌트에서 자식 컴포넌트로 값을 전달할 때 사용됩니다.

자식 컴포넌트에서는 프롭스를 선언하여 전달받은 값을 사용할 수 있습니다.


Vue.component('child-component', {
  props: ['propName'],
  template: '<p>{{ propName }}</p>'
})

이벤트는 컴포넌트에서 특정 동작을 알리기 위해 발생시키는 신호입니다. 자식 컴포넌트에서 이벤트를 발생시키고 부모 컴포넌트에서 이벤트를 수신하여 필요한 동작을 수행할 수 있습니다.

이벤트는 v-on 디렉티브를 이용하여 발생시킬 수 있습니다.

<child-component v-on:eventName="handleEvent"></child-component>

컴포넌트의 장점

컴포넌트 기반 아키텍처는 다음과 같은 장점을 제공합니다.

결론

Vue.js의 컴포넌트 개념을 이해하고 사용하는 것은 웹 애플리케이션 개발에 매우 유용합니다. 컴포넌트를 사용하여 UI를 구성하면 코드의 재사용성과 가독성이 향상되며 유지 보수가 용이해집니다. Vue.js 프레임워크의 다양한 기능 중 컴포넌트는 반드시 익혀두어야 합니다.

참고 자료