본 내용은 인프런 장기효(캡틴판교)님의 Vue.js 끝장내기 - 실무에 필요한 모든 것 강의를 토대로 작성하였습니다.
1. API 모듈화
- 프로젝트의 규모가 커질 수록 하나의 index.js에 API를 정의하는 것은 유지 보수 측면에서 좋지 않음
- 기능 별로 모듈화를 하여 API를 정리하기
index.js
- 엑시오스 초기화 관련 함수들을 모으기
- 기능별로 분류된 각 모듈에서 엑시오스 인스턴스를 import하여 사용
- ex) 회원가입 및 로그인 관련 모듈인 auth.js에서 엑시오스 인스턴스인 instance를 import하여 관련 함수들을 정의
import axios from 'axios';
import { setInterceptors } from './common/interceptors';
// 엑시오스 인스턴스 초기화 함수
function createInstance() {
return axios.create({
baseURL: process.env.VUE_APP_API_URL,
});
}
const instance = createInstance();
// 토큰이 필요한 경우의 API에 대한 엑시오스 인스턴스 초기화 함수
function createInstanceWithAuth(url) {
const instance = axios.create({
// 파라미터로 받은 url을 baseURL에 포함
baseURL: `${process.env.VUE_APP_API_URL}${url}`,
});
return setInterceptors(instance);
}
// 생성된 인스턴스는 /posts를 URL에 붙이게 됨
const posts = createInstanceWithAuth('posts');
// 다른 모듈에서 엑시오스 인스턴스를 import할 수 있도록 export
export { instance, posts };
2. 동적 라우팅
- Dynamic Routing Matching
- route 인스턴스 안의 params 객체의 프로퍼티로 파라미터가 전달됨
- 라우트 정의할 때, 콜론을 붙인 부분과 매칭되게 됨
// src/routes/index.js
// 라우트 정의 파일
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
export default new VueRouter({
mode: 'history',
routes: [
...
{
// 동적 라우팅
// :id는 파라미터로 전달됨
// 예를 들어, /post/1993 으로 이동을 하면, 해당 페이지에서 params의 id 프로퍼티에 1993이 들어오게 됨
path: '/post/:id',
component: () => import('@/views/PostEditPage.vue'),
},
...
],
});
Reference
'programming study > Vue' 카테고리의 다른 글
Vue.js - 테스팅, Jest (0) | 2022.06.11 |
---|---|
Vue.js - 뷰 필터 (0) | 2022.06.08 |
Vue.js - 엑시오스 인터셉터 (0) | 2022.05.22 |
Vue.js - 토큰 (0) | 2022.05.21 |
Vue.js - Vuex(mutations, getters) (0) | 2022.05.15 |