🔷 재사용 가능한 코드 블록
더 알고 싶으면 전에 포스팅한 리액트 컴포넌트 포스팅을 참고하시라
🔷 컴포넌트의 템플릿, 로직 및 스타일을 하나의 파일로 묶어낸 특수한 파일 형식 (*.vue 파일)
🔷 SFC 파일 예시
<template>
<div class="greeting">{{msg}}</div>
</template>
<script setup>
import { ref } from 'vue';
const msg = ref('Hello Vue!');
</script>
<style>
.greeting {
color: red;
}
</style>
💡 파일 타입에 따른 결합보다 사용 목적에 따른 결합을 우선시하여 탄생한 구조이다. 프론트엔드의 프로젝트 구조가 점점 복잡해지며 파일 타입에 따른 결합이 큰 의미가 없어졌다.
🔷 SFC 문법 개요
💡 template 태그는 렌더링 시 사라지기 때문에 template 안에 div등의 최상단 HTML 요소를 넣고 그 안에 구조를 구현하는 것을 권장하고 있다. 옛날에는 template 자식으로 두 개 이상의 태그가 형제로 나오면 터졌다고 한다.
💡 script setup은 컴포넌트의 setup()함수로 사용된다. 이제는 리턴을 따로 해주지 않아도 괜찮다.
💡 style 태그에
scoped
지정을 하면 부모 컴포넌트의 스타일이 자식 컴포넌트로 유출되지 않는다. 단, 자식 컴포넌트의 최상위 요소는 부모와 자식의 CSS 영향을 모두 받는다.
👍 https://play.vuejs.org/ 에서 Vue 컴포넌트 코드 작성 및 미리보기가 가능하다.
❗ Vue SFC는 컴파일러를 통해 컴파일 된 후 빌드 되어야 한다. 그래서 실제 프로젝트에서 일반적으로 SFC 컴파일러를
Vite
와 같은 공식 빌드 도구를 사용해 사용한다.
🔷 프론트 엔드 개발 도구로써 빠른 개발 환경을 위한 빌드 도구와 개발 서버를 제공한다.
🔷 Vite 튜토리얼(스캐폴딩)
💡 Scaffolding (스캐폴딩)
새로운 프로젝트나 모듈을 시작하기 위해 초기 구조와 기본 코드를 자동으로 생성하는 과정
- 개발자들이 프로젝트를 시작하는 데 도움을 주는 틀이나 기반을 제공하는 작업
- 초기 설정, 폴더 구조, 파일 템플릿, 기본 코드 등을 자동으로 생성하여 개발자가 시작할 때
시간과 노력을 절약하고 일관된 구조를 유지할 수 있도록 도와 줌
1. vite 프로젝트 생성
npm create vue@latest
2. 프로젝트 이름을 정하고 나머지 싹 다 'NO' 설정
3. 프로젝트 폴더 이동 후 패키지 설치
cd vue-project
npm install
4. Vue 프로젝트 서버 실행
npm run dev
💡 Node Package Manager (NPM): Node.js의 기본 패키지 관리자
🔷 Node.js
🔷 Vite 프로젝트 구조
1. node_modules
.gitignore
에 작성됨 (깃에 올라가지 않게 됨)2. package-lock.json
npm install
명령을 통해 패키지를 설치할 때, 명시된 버전과 의존성을 기반으로 설치3. package.json
4. public 디렉토리
-항상 root 절대 경로를 사용하여 참조
• public/icon.png
는 소스 코드에서 /icon.png
로 참조할 수 있음
5. src 디렉토리
6. src/assets
7. src/components
8. src/App.vue
9. src/main.js
10. index.html
🔷 Module
Bundler
🔷 Bundler
🔷 컴포넌트 사용 2단계
1. 컴포넌트 파일 생성
컴포넌트 이름은 파스칼 케이스 혹은 케밥 케이스로 권장된다. 그 외 규칙들은 다음 참고
컴포넌트 이름 규칙
🖥 MyComponent.vue
<template>
<div>
<h2>MyComponent</h2>
<MyComponentItem />
<MyComponentItem />
<MyComponentItem />
<MyComponentItem />
</div>
</template>
<script setup>
import MyComponentItem from '@/components/MyComponentItem.vue';
</script>
<style>
</style>
🖥 MyComponentItem.vue
<template>
<div>
<h3>MyComponentItem</h3>
</div>
</template>
<script setup>
</script>
<style scoped>
</style>
🖥 App.vue
<template>
<div>
<h1>App.vue</h1>
<MyComponent />
</div>
</template>
<script setup>
//import MyComponent from './components/myComponent.vue'
//@ --> src/절대경로
import MyComponent from '@/components/myComponent.vue'
</script>
<style scoped>
</style>
🔷 가상의 DOM을 메모리에 저장하고 실제 DOM과 동기화하는 프로그래밍 개념
<!--Vue의 영역(Virtual DOM)-->
<div id="app"></div>
🔷 내부 렌더링 과정
🔷 Virtual DOM 패턴의 장점
1. 효율성
2. 반응성
3. 추상화
🔷 Virtual DOM 주의사항
❗ 실제 DOM에 직접 접근하지 말 것 ❗
❗ Vue의 ref와 Lifecycle Hooks 함수를 사용해 간접적으로 접근하여 조작할 것 ❗
React 배우던 그 때 그 맛이 슬슬 나는 것 같다.