우선 프로젝트를 생성하면 위와같은 파일구조를 갖는다.
root dir을 보면 굉장히 많은 설정(config)파일이 있는 것을 확인할 수 있다.
또 pulic 폴더를 보면 깔끔한데 index.html에 <div id="app">
요 부분이 실제로 Vue app이 마운트 될 곳이다. 이는 React와 구조가 같다.
src 폴더또한 react와 마찬가지로 우리가 주로 작업할 무대가 되겠다. 하지만 .vue
확장자의 처음보는 파일이 등장하는데
Vue 프로젝트는 main.js 파일을 먼저 로드하고 실행하도록 설정되어 있다.
components 폴더 밑에는 HelloWorld.vue가 있는데 이는 kebab-case
, PascalCase
, carmelCase
3중 하나로 명명한다.
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')
가장 위의 createApp 메서드를 vue로부터 import 해오는데 이는 전역으로 사용하던 Vue 객체가 없으니 vue 프레임워크로부터 메서드를 가져오는 것이다.
그리고 마지막줄을 보면 .vue
파일로부터 가져오는 App
파일이 있는다. 원래 creatApp 안에는 Vue 구성 객체를 넣었다. data
, methods
, computed
, etc.. 하지만 그냥 파일을 import 해서 넣는데 자세한건 바로 알아보고 이를 css selector로 찾아서 마운트 하는 모습이다.
<template>
<img alt="Vue logo" src="./assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'
export default {
name: 'App',
components: {
HelloWorld
}
}
</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>
위 코드는 최초로 vue 앱을 생성하면 나오는 코드이다. 이는 tamplate, script, style 3개의 구역으로 나눠진다.
그리고 우리가 그동안 작성했던 Vue 구성객체는 <script>
안에 들어가있다.
그러면 이것들이 어떤 과정을 통하여 동작을 할까? 바로 build work flow
를 통하여서 이다.
JavaScript의 특화된 차세대 기능과 App.vue 파일과 같이 Vue에 특화된 구문으로 코드를 작성한다.
'빌드 단계'에 따라 브라우저에서 작동하는 코드로 변환한다.
즉, npm run serve 스크립트는 개발 서버만 가동하는 게 아니라 코드 파일을 감시하고 코드를 변환하는 빌드 프로세스도 가동한다.
위 사진처럼 layout, UI, 기능별 디렉토리를 만들어서 보기 쉽게 관리하면 좋다.
layout 폴더밑에는 The
접두어가, UI 폴더 밑에는 Base
접두어가 붙는데 이는 Vue에서 제공하는 style guide이다. 무조껀 따르는 것은 아니지만 강력 추천하는 스타일 패턴이다. 자세한 건 공식문서를 확인해보자.