vue.js
Vue CLI
코딩 화이팅
2023. 5. 8. 15:12
Command Line Interface(명령줄 인터페이스)
- Vue.js 개발을 위한 표준 도구
- Vue.js에서 공식으로 제공하는 CLI
- 개발의 필수는 아니지만 개발의 편리성을 위해 필수처럼 사용
- Vue 프로젝트를 빠르게 구성할 수 있는 스캐폴딩을 제공
- Vue와 관련된 오픈 소스들의 대부분이 CLI를 통해 구성이 가능하도록 구현되어 있음
NPM(Node Package Manager)
Command에서 third party 모듈을 설치하고 관리하는 툴
cmd에다가 설치하기
NPM 명령어
- npm init : 새로운 프로젝트나 패키지를 만들 때 사용(package.json이 생성됨)
- npm install 패키지 : 생성되는 위치에서만 사용 가능한 패키지로 설치
- npm install -g 패키지 : 글로벌 패키지 추가, 모든 프로젝트에서 사용 가능한 패키지로 설치
[Vue 2] babel 선택
Vue Project 구조
node_modules
node.js 환경의 여러 의존성 모듈
public
- index.html : Vue 앱의 뼈대가 되는 파일 / 단일 html 파일
- favicon.html : Vue 아이콘
src/assets
webpack에 의해 빌드된 정적 파일
src/component
하위 컴포넌트들이 위치
src/App.vue
최상위 컴포넌트
src/main/js
- webpack이 빌드를 시작할 때 가장 먼저 불러오는 entry point
- 실제 단일 파일에서 DOM과 data를 연결했던 것과 동일한 작업이 이루어지는 곳
- Vue 전역에서 활용할 모듈을 등록할 수 있는 파일
babel.config.js
babel 관련 설정이 작성된 파일
package-json
프로젝트의 종속성 목록과 지원되는 브라우저에 대한 구성 옵션
package-lock.json
- node_moduls에 설치되는 모듈과 관련된 모든 의존성을 설정/관리
- 팀원 및 배포 환경에서 정확히 동일한 종속성을 설치하도록 보장
- 사용할 패키지의 버전을 고정
- 개발 과정 간의 의존성 패키지 충돌 방지
SFC(Single File Component)
- 확장자가 .vue인 파일
- template+script+style=.vue(HTML, CSS, JavaScript 코드를 하나의 파일에서 관리)
- 구문 강조가 가능
- 컴포넌트에서만 CSS의 범위를 제한할 수 있음
SFC-<template>
- 기본 언어 : HTML
- 각 *.vue 파일은 한번에 최대 하나의 <template> 블록을 포함할 수 있음
- 내용은 문자열로 추출되어 컴파일된 Vue컴포넌트의 template 옵션으로 사용
- root element가 하나 필요함
SFC-<script>
- 기본 언어 : JavaScript
- 각 *.vue파일은 한번에 최대 하나의 <script> 블록을 포함할 수 있음
- ES2015(ES6)를 지원하여 import와 export를 사용할 수 있음
SFC-<style>
- 기본 언어 : CSS
- 각 *.vue 파일은 여러 개의 <style> 태그를 지원
- scoped 속성을 이용하여 현재 컴포넌트에서만 사용 가능한 CSS를 지정 가능
HeaderNav.vue
<template>
<div>
<h2>헤더입니다.</h2>
</div>
</template>
<script>
export default {};
</script>
<style></style>
=====================================================================
MainContent.vue
<template>
<div>
<h2>메인입니다.</h2>
</div>
</template>
<script>
export default {};
</script>
<style></style>
=====================================================================
FooterNav.vue
<template>
<div><h2>푸터입니다.</h2></div>
</template>
<script>
export default {};
</script>
<style></style>
=====================================================================
App.vue
<template>
<div id="app">
<img alt="Vue logo" src="./assets/logo.png" />
<!-- <HelloWorld msg="Welcome to Your Vue.js App"/> -->
<header-nav></header-nav>
<main-content></main-content>
<footer-bar></footer-bar>
</div>
</template>
<script>
// import HelloWorld from "./components/HelloWorld.vue";
import HeaderNav from "./components/HeaderNav.vue";
import MainContent from "./components/MainContent.vue";
import FooterBar from "./components/FooterBar.vue";
export default {
name: "App",
components: {
// HelloWorld
HeaderNav,
MainContent,
FooterBar,
},
};
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>