Vue.js + Express + MySQL로 Node API 서버 구성하기 Quick Start — Part 1

Vue.js + Express로 프론트엔드와 백엔드 통신 이해하기

조진주
hivelab-dev
13 min readMay 30, 2019

--

들어가기에 앞서…

이번 시리즈에서는 Vue.js를 활용한 프론트엔드 처리 뿐 아니라 Express, MySQL을 함께 사용함으로써 API를 통한 데이터 연동 과정을 소개합니다. Vue.js 입문자도 쉽게 이해할 수 있도록 쉽게 구성했으며, 이 과정에서 참고한 글은 하단에 기재해놓았습니다.

시리즈는 3 파트로 연재될 예정입니다.

Part1. Vue.js + Express로 프론트엔드와 백엔드 통신 이해하기
Part2. Express + MySQL로 DB 연동하기
Part3. Mix All — 로그인/회원가입 기능 개발하기

이 글은 Part1으로, Vue.js + Express로 프론트엔드와 백엔드가 서로 어떻게 데이터를 주고받는지 이해할 수 있는 간단한 예제를 다룹니다.

Step1. 프론트엔드 개발 환경 세팅 (Vue.js)

실습을 위한 폴더를 하나 생성합니다. 이 글에서는 ‘movie’라고 해보겠습니다.
movie 폴더에서 다음 명령을 실행하여 Vue Cli 3.x 프로젝트 환경을 세팅합니다.

locahost:8080으로 접속하면 아래와 같은 화면을 확인할 수 있습니다.

Vue Cli 3.x 첫 실행 화면

Step2. 백엔드 개발환경 세팅 (Express)

이 과정 역시 ‘movie’ 폴더에서 진행합니다. 다음 명령을 실행하여 express 프레임워크를 설치합니다.

localhost:3000 으로 접속하면 아래와 같은 화면을 확인할 수 있습니다.

Express 첫 실행 화면

Step3. 백엔드와 연동

movie/frontend 폴더로 이동하여, vue.config.js를 생성한 뒤 아래와 같이 입력합니다.

배포 파일의 위치를 위와 같이 지정한 뒤, Express 서버는 종료한 상태로 frontend 폴더에서 npm run build를 실행하면 다음과 같이 backend/public 폴더의 구조가 변경된 것을 확인할 수 있습니다.

정상적으로 배포가 되었을 때의 폴더 구조 변화

그리고 나서 Express 서버를 실행시키면, localhost:3000의 페이지도 프론트엔드쪽과 동일하게 변경된 것을 확인할 수 있습니다.

Step3. 백엔드에서 프론트엔드로 보낼 데이터 마련하기

backend 폴더 하위에 movies.json이라는 이름으로 아래와 같이 데이터를 마련합니다. 네이버 영화에서 데이터를 가져와봤습니다.

이제 라우터를 설정합니다. backend/routes/ 하위에 movies.js를 생성한 뒤, 다음과 같이 입력합니다.

backend/app.js에는 아래 내용을 추가합니다. 프론트엔드쪽에서 /api/movies 요청을 보내면, 위 코드에서 설정한 라우터를 통해 데이터를 처리합니다.

Step4. 프론트에 뿌려질 화면 제작

frontend/src/component로 이동하여 MovieIndexPage.vue를 생성하고 다음과 같이 입력합니다.

상세 페이지로 MovieShowPage.vue를 생성하고 다음과 같이 입력합니다.

이제 라우터를 설정합니다. npm install vue-router --save 명령어로 Vue 라우터 패키지를 설치합니다.

라우터를 생성했으므로, frontend/src/app.vue에서는 <router-view> 요소를 넣어줍니다.

API 통신을 위해npm install axios --save 명령을 실행하여, axios 패키지를 설치합니다.

그리고 frontend/src/main.js를 다음과 같이 수정합니다.

Step5. 마무리

Vue 서버를 실행하여, 정상 동작하는지 확인합니다.

인덱스 화면
영화 상세 화면

npm run build 명령으로 빌드 실행 후, localhost:3000에서도 동일한 화면을 볼수 있다면 실습은 성공입니다.

이 과정으로 프론트엔드와 백엔드가 어떻게 데이터를 주고받는지 알 수 있었습니다. 다음 파트에서는 정적인 데이터가 아닌 Express + MySQL로 DB 연동을 통해 동적 데이터 다루는 법을 소개하겠습니다.

시리즈 정보

🔍 하이브랩과 함께 할 멋진 FE개발자를 찾고 있습니다.

--

--