WEB/Vue.js

[TIL] Vue 기초 7 - Vue 프로젝트 만들기 | 속성 | 사용자 정의 이벤트

jimyu 2025. 4. 1. 14:27

번들링

  • WebPack, Vite
  • 웹팩은 초기 로딩 시간이 좀 필요한 단점이 있음

히든파일?

=> 리눅스/맥에서는 .~~로 쓰면 파일이 안 보이는 히든파일임

프로젝트 골격

  • App.vue → 엔트리 포인트, 컴포넌트
  • package.json ⇒. “type: module” ⇒ esmodule쓰겠다
  • vite.config.js 
  • '@': fileURLToPath(new URL('./src', import.meta.url)) => at 의미
  • jsconfig.json
  • "paths": { "@/*": ["./src/*"] }
  • package-lock.json
    • 디렉토리 아니고 그냥 파일
    • 이 파일이 package.json에 의존하고 있음

App.vue

  • script setup
  • import 할 때는 파스칼 케이스만 가능
  • 사용자 정의
  • 파스칼, 케밥 케이스 모두 가능
  • script scoped
  • export 는 구조분해할당 필요, export default는 그냥 import하면 됨

컴포넌트 등록 방법

  • 전역 등록
  • 지역적으로 등록
    • import
  • 사용자 정의 태그 만들기

속성

  • props!
  • 부모 컴포넌트는 v-bind로 자식 컴포넌트에 전달
  • 자식 컴포넌트는 props 옵션으로 속성 정의
  • 속성으로 전달받은 데이터는 변경이 불가하다(읽기 전용임)
  • 부모에서 속성 값 변경하면 자식은 자동 리렌더링
  • 전달해준 props는 참조를 전달해준 것. 따라서 이 참조를 바꿀 수는 없지만 참조의 프로퍼티를 수정하는 건 가능하지만 비권장.
  • 자식 ⇒ 부모 컴포넌트로 전달하는 방법 : emit events
    • $emit() 활용
    • 부모에서 v-on 사용

속성의 유효성 검증

  • 프로퍼티명이 속성명
  • type에 생성자 함수 지정(String, Function, Symbol 등)

사용자 정의 이벤트

  • 상태관리 툴 pinia(리액트에서는 리덕스 같은 거 쓰는 것처럼)

이벤트 유효성 검증

  • 올바르게 이벤트를 발생시켰는지 검증
  • 이름 오타 방지 등등 검증
emits: {
	이벤트명1 : (e) => {
	//true 리턴되면 유효
	//false 리턴되면 유효 노노
	},
	...
	}