SpringBoot - vue.js : 02. vue.js 프로젝트 구조
SpringBoot - vue.js : 02. vue.js 프로젝트 구조
01. Vue.js 일반적인 프로젝트 구조
(1) 일반적인 vue.js 프로젝트 구조
Vue.js 프로젝트의 구조는 프로젝트의 복잡성과 사용하는 도구에 따라 다소 다를 수 있습니다. 그러나 일반적으로 Vue CLI를 사용하여 생성된 Vue.js 프로젝트의 구조는 다음과 같습니다:
my-vue-project/
├── node_modules/
├── public/
│ ├── favicon.ico
│ └── index.html
├── src/
│ ├── assets/
│ ├── components/
│ ├── views/
│ ├── router/
│ ├── store/
│ ├── App.vue
│ └── main.js
├── .browserslistrc
├── .editorconfig
├── .eslintrc.js
├── .gitignore
├── babel.config.js
├── package-lock.json
└── package.json
(2) 일반적인 구조 설명:
- node_modules/ : 프로젝트에서 사용되는 npm 패키지가 저장되는 디렉토리입니다.
- public/ : 정적 파일이 위치하는 곳으로, index.html 파일이 이 디렉토리에 포함됩니다.
- src/ : 프로젝트의 소스 코드가 저장되는 디렉토리입니다.
- assets/ : 이미지, 폰트, 스타일시트 등의 리소스가 저장되는 디렉토리입니다.
- components/ : Vue 컴포넌트 파일이 저장되는 디렉토리입니다. 일반적으로 .vue 확장자를 가진 파일들이 포함됩니다.
- views/: 페이지 레벨의 Vue 컴포넌트가 저장되는 디렉토리입니다. 이러한 컴포넌트는 라우터에 의해 로드되며, 한 페이지를 구성하는 여러 하위 컴포넌트를 포함할 수 있습니다.
- router/ : Vue Router 설정 파일이 저장되는 디렉토리입니다.
- store/ : Vuex 저장소 설정 파일이 저장되는 디렉토리입니다.
- App.vue : 애플리케이션의 루트 컴포넌트입니다.
- main.js: 애플리케이션의 진입점이자, 루트 인스턴스를 생성하고 마운트하는 파일입니다.
- .browserslistrc, .editorconfig, .eslintrc.js, .gitignore : 각각 브라우저 호환성, 에디터 설정, ESLint 설정, Git 설정 파일입니다.
- babel.config.js : Babel 설정 파일입니다. Babel은 자바스크립트 코드를 변환하여 다양한 브라우저에서 실행 가능하도록 도와줍니다.
- package-lock.json, package.json : 프로젝트에 대한 메타데이터와 종속성을 기록하는 파일입니다.
02. Vue.js - Electron 프로젝트 구조
Vue.js와 Electron을 결합한 프로젝트의 일반적인 구조는 다음과 같습니다:
(1) 프로젝트 폴더 생성 및 초기화:
mkdir my-vue-electron-app
cd my-vue-electron-app
npm init
Vue.js 및 Electron 설치:
npm install vue
npm install electron
(2) 프로젝트 폴더의 구조:
my-vue-electron-app
├── src
│ ├── main
│ │ ├── index.js (Electron main process)
│ ├── renderer
│ │ ├── App.vue (Vue.js root component)
│ │ ├── main.js (Vue.js entry point)
│ │ └── assets
│ │ ├── css
│ │ └── img
├── public
│ ├── index.html
├── package.json
├── .gitignore
└── README.md
(3) Vue.js를 위한 설정:
src/renderer/main.js 파일에 다음 내용을 추가합니다.
import Vue from 'vue'
import App from './App.vue'
new Vue({
render: h => h(App),
}).$mount('#app')
(4) Electron을 위한 설정:
src/main/index.js 파일에 다음 내용을 추가합니다.
const { app, BrowserWindow } = require('electron')
const path = require('path')
const isDev = process.env.NODE_ENV !== 'production'
function createWindow() {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
if (isDev) {
win.loadURL(`http://localhost:8080`)
} else {
win.loadFile(path.join(__dirname, '../public/index.html'))
}
}
app.whenReady().then(createWindow)
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow()
}
})
package.json 파일에 다음 스크립트를 추가하여 개발 및 빌드 명령을 설정합니다.
"scripts": {
"serve": "vue-cli-service serve src/renderer/main.js",
"build": "vue-cli-service build src/renderer/main.js",
"electron:serve": "electron src/main/index.js",
"electron:build": "npm run build && electron-builder"
},
"main": "src/main/index.js"
이 구조를 사용하면, Vue.js와 Electron을 결합한 프로젝트를 개발하고 빌드하는데 도움이 됩니다. 프로젝트 구조를 이해하고 필요한 모듈 및 설정을 적용하면, 원활하게 애플리케이션을 개발할 수 있습니다.
Comments