저는 우선 저번에 만들었던 second페이지에서 받아오는 정보를 다시 보여주는 페이지를 만들었습니다. 일단 폼을 만들고 라우터 연결 등등의 연결을 해줄겁니다. vue > front > src > components에 새로운 members폴더를 생성합니다.
members.html 생성
1
2
3
<div>
<h1>members</h1>
</div>
members.vue파일 생성
1
2
3
4
5
<template src = "./members.html"></template>
<style scoped src = "./members.css"></style>
<script>
</script>
그리고 주소 라우터를 생성해줍니다. 위치는 front > src > router > index.js
1
2
3
4
5
6
7
8
9
...
import members from'@/components/members/members'
...
{
path: '/members',
name: 'members',
component : members
}
...
3.api 미들웨어로 등록
app.js에 api를 미들웨어로 등록해줍니다.
1
2
app.use('/api', route);
//데이터만 응답하는 서버 api
4. test 페이지 라우터 만들기
이제 테스트 페이지의 라우터를 만들어줍니다. 라우트는 vue(최상위 위치) > routes 에서 셋팅해줍니다. index.js에서는
1
2
3
let accountRoute = require('./account.route');
module.exports = accountRoute;
account.route.js를 만들어 라우팅
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var express = require('express');
var db = require('../db.config');
var accountRoute = express.Router();
var ref = db.ref("/");
//firebase에서 들어가는 경로 설정
accountRoute.get('/test',(req, res) => {
var usersRef = ref.child("users")
//child 로 하위 메뉴로 들어감
usersRef.once('value')
.then((data)=>{
console.log(data);
res.send(data);
//then은 성공했을 때 행동양식
})
.catch(err => {
res.statusCode(500)
console.log(err)
//catch는 실패했을 때 행동양식
})
});
module.exports = accountRoute;
5. http 비동기 통신을 위해 axios라이브러리 설치
이 부분은 Vue.js 한국 사용자 모임에 잘 정리되어 있습니다. HTTP 요청을 위한 axios axios는 비동기 통신을 위한 플러그인입니다.
비동기 전송 방식은 요청과 그 결과가 동시에 일어나지 않습니다. 송, 수신간 동기를 맞추지 않고(?) 문자단위로 구분하여 전송합니다. 상대방의 상태와 관계없이 일방적으로 다음 동작을 발생시킵니다. 구현이 간단하고 비용이 적게드나 데이터 전송 시 많은 오버헤드(?)를 가진다고 합니다.
1
npm install --save axios
npm으로 axios를 설치해줍니다. 그리고 front > src에 들어있는 main.js에서 import.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from'vue'
import App from'./App'
import router from'./router'
import axios from'axios'
Vue.prototype.$http = axios
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})
6. localhost:3000 의 데이터를 받아오기
이제부터 좀 헷갈리기 시작합니다. 돌아가는 상황을 보면 second 파일에서 자료를 보낼때 그것을 캐치해서 members에 뿌리는 건가 싶기도 합니다.
일단 members에서는 localhost:3000의 데이터를 가져와보기로 합니다. members.vue에서 다음과 같은 태그를 넣어 줍니다.