📚 Reference
📜 Chapter
defineProps()
defineEmits()
Compiler Macro (컴파일러 매크로)
- Compiler Macro
- 컴파일러 매크로
- 프로그램 코드가 컴파일되는 시점에 코드를 변환하거나 확장하는 특별한 명령어 또는 구문이다.
- Vue 3의
defineProps
, defineEmits
가 대표적인 예시이며, 이들은 일반적인 런타임 함수와는 다르게 작동한다.
- 컴파일러 매크로는 코드가 실행되는 런타임(Runtime)이 아니라, 코드를 기계어로 번역하는 컴파일(Compile Time) 단계에서만 의미를 가지는 구문이다.
작동 방식
- 일반 함수처럼 보임
- 개발자는
defineProps(...)
처럼 일반 JavaScript 함수처럼 코드를 작성한다.
- 컴파일러 개입
- Vue 컴파일러(특히
<script setup>
을 처리하는 부분)는 코드를 분석하다가 이 매크로를 만나면, 해당 매크로 호출을 실제 JavaScript 코드로 변환하거나 컴포넌트의 메타데이터로 추출한다.
- 런타임 코드 생성
- 컴파일러는 이 매크로 호출 자체를 런타임 코드에 남기지 않고, 대신 Vue 옵션 API 형식의 표준 코드를 생성해 넣는다.
변환 예시