• Stars
    star
    106
  • Rank 325,871 (Top 7 %)
  • Language Vue
  • Created over 6 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

한 프로젝트에서 spring과 vue 개발하기

Spring + Vue.js

스프링과 뷰가 어떻게 한 프로젝트 안에서 동작할 수 있을지 잡아본 구조이다. (꼭 Vue가 아니더라도, 어떠한 Frontend 라도 관계없다)

의뢰인

SpringVue.js를 한 프로젝트 안에서 개발하는 간단한 예제 프로젝트!

이지만, 사실 떨어져 있어도 상관없을 만큼 관계가 없다. 그러니 개발은 각각 Spring, Vue.js 를 하면 된다.

중요한 것은 한 어플리케이션에서 효율적으로 개발하기 위한 환경일 것이다.

Webpack

Vue Cli 를 통해 설치하면 더 안정적인 Webpack 설정을 얻을 수 있다. 하지만 지극히 Front End 위주적인 환경을 제공해주기도 하고, 이 프로젝트에서 필요한 양 이상의 설정이 더욱 복잡함을 가중시켜, 약 1년 전 설정했던 Webpack 설정을 그대로 사용했다.

  • 한 프로젝트에 있지만, 철저히 분리해야 복잡도를 줄일 수 있다. 그래서 src 하위에 front 라는 디렉토리를 만들고 그곳에서 모든 프론트엔드 관련 작업을 하도록 한다. (폴더 구조는 선호하는 구조로 잡으면 된다.)

    • 빌드 시 불필요한 파일(번들되기 전 파일, 미사용 이미지 등)이 같이 패키징 되는 더러운 상황과, 이를 방지하기 위해 빌드 전 resource directory 에 불필요한 파일을 매번 삭제해야하는 불필요한 행위를 줄여줄 수 있다.
  • Webpack 의 bundle 최종 경로가, Spring 의 resource static path 를 향하도록 한다.

    • 최종 bundle 된 파일을 다시 copy 하는 불필요한 행위를 줄여줄 수 있다.
    • webpack devServer 환경과 함께 사용하면, 스프링에서는 동일한 로직으로 운영, 개발 등 환경을 운영할 수 있다. (Backend Template 에서 js, css 등의 파일명을 교체하거나 경로를 조작하는 불필요한 행위를 줄여줄 수 있다.)
    entry: {
        app: path.resolve(__dirname, 'src/front/main.js')
    },
    output: {
        path: path.resolve(__dirname, 'src/main/resources/static')
        ...
    }

개발

두번 실행하는게 귀찮지만, 비교적 간단하다.

  1. Spring WebApplication 을 구동한다.

  2. 터미널에서 npm run start 를 실행하여 webpack devServer 를 구동한다.

  • 이 프로젝트의 package.json 에는 webpack 을 구동하는 script 를 선언해두었다. start 명령도 그 중 하나이다.
    • start : webpack devServer 구동
    • dev : 개발 환경 webpack - 압축, 난독화되지 않은 번들 파일 생성.
    • build : 운영 환경 webpack - 압축, 난독화된 번들 파일 생성.
  1. spring devtools 와 webpack devServer 환경에서 양쪽을 오가며 실시간으로 개발을 한다.

빌드

배포 또한 매우 단순하다.

gradle 에서 npm 명령을 사용할 수 있는 플로그인을 사용하여, build 환경의 webpack 을 실행시켜주는 Task 를 아래와 같이 간단히 만들 수 있다.

그리고 build 과정 중 resources 를 생성하는 순서 앞에 끼어넣어준다.

webpack의 bundle이 자동으로 Springresources path 하위에 파일을 넣어주므로, 추가적인 것은 필요없다.

task webpack(type: NpmTask, dependsOn: 'npmInstall') {
	args = ['run', 'build']
}

processResources.dependsOn 'webpack'

아무 특별한 것 없이 gradlebuild task 를 실행하면 된다.

그러면 build 된 jar 파일 안에 static 파일들이 잘 옮겨진 것을 볼 수 있다.

빌드 후 옮겨진 파일

More Repositories

1

spring-boot-chatbot

Spring Boot 기반 대화형 Chat Bot Supported Framework.
Java
95
star
2

spring-boot-ehcache-monitor

Ehcache Monitoring Web for Srping Boot Application.
Java
82
star
3

spring-boot-custom-yaml-importer

spring boot support for automatically loading custom yaml file.
Java
79
star
4

spring-batch-quartz

Spring Batch + Quertz 조합.
Java
37
star
5

gitzua

git user management for mac, linux.
Shell
14
star
6

spring-boot-attitude

2017 스프링 캠프 발표 자료.
Java
12
star
7

kingbbode.github.io

my site
HTML
10
star
8

TIR

책읽기 프로젝트 Today I Read.
9
star
9

spring-boot-admin-sample

Java
8
star
10

restdocs-presentation

팀 공유용 샘플 코드 작성
Java
8
star
11

spring-dynamic-bean-factory

For beans that are not necessarily required but should be recovered.
Java
6
star
12

woowahan-multi-module

5
star
13

spring-boot-batch-quartz

spring batch + quartz for spring boot
Java
4
star
14

spring-boot-properties-diff

3
star
15

oop-java-sudda

oop 연습
Java
3
star
16

java9practice

java 9 해보자!
Java
2
star
17

chained-tx-manager

experiment for spring multi datasource transaction.
Java
2
star
18

scouter-plugin-server-alert-teamup

scouter apm
Java
2
star
19

jstazua

Shell
2
star
20

ehcache3-monitoring

ehcache admin
Java
2
star
21

spring5-research

1
star
22

tdd-jwp

Java
1
star
23

what-n-how-testing

spring camp 2019 support repo.
Java
1
star
24

chatbot-framework

객체지향, 리펙토링 연습겸 기존 레거시 코드를 프레임워크화 도전
Java
1
star
25

spring-jsonp-server

Jsonp Server Example
Java
1
star
26

gradle-plugins

Groovy
1
star
27

wannaSee

올해 새로운 목표 프로젝트.
1
star
28

spring-boot-redis

Redis Example in Spring
Java
1
star
29

wedding-home

for friend
CSS
1
star