클론 프로젝트 내 로그인 화면을 구현할 때,
로그인 버튼 클릭과 동시에 api를 호출하면서 문제가 생겼다.
loginService() {
Object(C_Projects_practive_vue_node_modules_babel_runtime_helpers_esm_classCallCheck_jsWEBPACK_IMPORTED_MODULE_1["default"])(this, loginService);
Object(CProjects_practive…
이게 뭐지..모듈 바벨 런타임이 어떻다는 거지...?
//.js
import api from '@/http'
export class loginService {
login = params => {
return api.post('sign-in', params)
}
}
export default loginService
//.vue
<script setup>
import loginService from '@/service/login'
const state = reactive({
userInfo: {
id: '',
pwd: '',
},
})
const logIn = () => {
console.error(loginService)
loginService.login(state.userInfo)
}
</script>
한참동안 문제의 원인을 파악하지 못하다가 문득 class를 export 하는 방법을 서칭하게 되었고, 그제서야 export문이 잘못되었다는 것을 알게 되었다.
자바스크립트에서 class를 export 할 때,
class를 선언한 같은 라인에서 바로 export 시킬 수 있다.
코드를 살펴보자.
//login.js
import api from '@/http'
export class loginService {
login = params => {
return api.post('sign-in', params)
}
}
같은 코드로써 class를 선언한 이후 export 시킬 수 있다.
//login.js
import api from '@/http'
class loginService {
login = params => {
return api.post('sign-in', params)
}
}
export { loginService }
or
export new loginService()
위와 같이 export된 class파일을 호출할 때는 아래의 규칙을 따라야 한다.
import { 클래스명 } from '경로'
import { loginService } from '@/service/login'
import 새로운 네이밍 from '경로'
import Api from '@/service/login'
Borislav Hadzhiev의 블로그
lts0606의 블로그
3jun의 블로그
stack overflow