디자인에 감각적이지 않기때문에, bootstrap을 최대한 활용하면서 꾸미려고 한다.
버전에서 애를 많이 먹었는데, vue, bootstrap 등과 관련한 dependency 버전은 아래와 같다.
"dependencies": {
"bootstrap": "^5.2.3",
"bootstrap-vue": "^2.23.1",
"core-js": "^3.8.3",
"vue": "^3.3.4",
"vue-router": "^4.0.13"
},
Add Header
<template>
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand">Navbar</a>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</nav>
</template>
<script>
export default {
name: 'Header',
};
</script>
<style scoped>
/* Header component styles */
</style>
Change Code at App.vue
<template>
<div id="app">
<Header></Header>
<div id="content" class="content">
<router-view></router-view>
</div>
</div>
</template>
<script>
import Header from './components/layout/Header.vue'
export default {
name: 'App',
components: {
Header
}
}
</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>
Fix main.js
import { createApp } from 'vue'
import App from './App.vue'
import 'bootstrap'
import 'bootstrap/dist/css/bootstrap.min.css'
import router from "./router.js"
createApp(App)
.use(router)
.mount('#app');
위와 같이 header를 추가해주면 아래와 같이 닉네임 입력 칸과 검색 버튼이 추가가 된다.
일단, bootstrap이 정상적으로 작동되는지 확인이 완료했다.
nav, 스피너 사용 고려 (아직 신경 써야할 부분)
front-end로 vue.js를 back-end로 spring boot를 사용할 때 방법이 2가지 정도가 있다.
첫번째, vue.js를 spring boot의 src directory에 index.html로 내보내는 방법
Vue.js 애플리케이션을 빌드한 후 생성된 정적 파일을 Spring Boot의 정적 자원으로 포함시키는 방법이다. Vue.js 애플리케이션과 Spring Boot 애플리케이션이 하나의 단일 애플리케이션으로 구성된다.
- 장점
- 구성이 간단하고 초기 설정이 쉽다.
- 서버 측에서 Vue.js 애플리케이션을 렌더링할 수 있다.
- 단일 애플리케이션을 배포하므로 배포 및 관리가 용이하다.
- 단점
- 개발 및 빌드 단계에서 Vue.js와 Spring Boot가 함께 실행되므로 개발 환경에서의 개별적인 테스트와 디버깅이 어려울 수 있다.
- 프론트엔드와 백엔드의 종속성이 높아져 유연성이 제한될 수 있다. (별로인듯..)
두번째, vue.config.js에서 프록시를 설정하여 spring boot 서버와 통신하는 방법
Vue CLI의 설정 파일(vue.config.js)을 사용하여 개발 환경에서의 프록시를 설정한다. Vue 개발 서버는 프론트엔드 애플리케이션을 제공하면서 백엔드 API 호출을 Spring Boot 서버로 전달한다.
- 장점
- 개발 시에는 프론트엔드와 백엔드를 개별적으로 실행하고 디버깅할 수 있다.
- 개발 환경에서의 효율적인 개발을 위해 Hot Module Replacement(HMR)과 같은 기능을 사용할 수 있다.
- 프론트엔드와 백엔드의 종속성이 낮아져 개별적으로 스케일링하거나 교체하는 데 유리하다.
- 단점
- 프록시 설정 및 개발 환경의 구성이 좀 더 복잡할 수 있다.
- 프론트엔드와 백엔드가 별도의 서버로 실행되므로 배포 및 관리가 더 복잡할 수 있다.
위의 장단점들을 비교해본 결과 두번째 방식이 더 적합하다고 판단이 되어서 두번째 방식으로 구현하려 한다.
관련 문서