일단 axiou설치는 되어있고 json파일을 vue에서 사용하려면 axios를 사용하여 읽어들어야한다. axios를 사용하기 위해선 페이지마다 import를 하여야한다.
우선 axios를 import할 파일을 utils라는 새로운 폴더안에 만들어보자

import axios form "axios";
// 인터넷 주소 정의 해놓기 - 해놓으면 다음에 임포트만으로 사용가능
export default axios.create({
baseURL:" http://localhost:8080",// 기본 인터넷 주소(도메인) 정의
headers:{ "Content-type": "application/json"}//통신 문서 규격 정의 : .html, .jpg, .json처럼 파일 형태를 정의 해야함
// application은 프로그램을 의미하고 이 프로그램을 json파일로 연결 할것이다 라는 의미이다.
//내보내기 : 백엔드 기본주소(기본주소란, 네이버 다음 등 cafe나 blog등이 없는 순수 홈페이지 주소.)
//vue의 기본 주소는 http://localhost:0808/ 도메인이라고도 한다.
//참고로 네이버는 http://naver.com
})

import http from "../utils/HttpCommon";// axios 임포트
class DeptService{
// 부서 조회 함수
// json 데이터(파일) 읽기(조회) : get("url")함수를 이용해서 그 파일에 들어와서 json파일을 읽어줌
getAll(){
return http.get("/dept.json");// dept.json파일을 읽어와 결과를 보여줌 (이 파일이 객체 배열로 되어있어서 객체배열을 결과로 가져옴)
// ❗❗❗경로가 아닌 파일명만 적어도 되는 이유는 http에 이미 " http://localhost:8080"라는 경로를 지정해주어서 이고 이 경로는 이 프로젝트의 public파일을 의미한다.
}
}
export default new DeptService();
정리
axios파일을 계속 import하는 것은 번거롭기 때문에 모든 컴포넌트에서 공동으로 사용할 함수들을 미리 파일에 정의해서 import하는게 좋다.(위 과정에서 1~3번)
ex) 게시판을 만들때 사용되는 함수들이 정해져 있다. 그때마다 함수 정의하는게 귀찮으니 미리 함수들을 정의해놓은 공통 함수 모음 파일을 만들어 게시판 만들때마다 import해서 사용하면 쉽다.
그후 새로운 파일을 만들어 여기서 json파일을 읽어들여줄 getAll함수를 정의해준고 내보내준다.(4~6과정)
import DeptService from "../services/DeptService";
data() {
return {
dept : []
}
}
async retrieveDepts(){//부서조회 함수 - 프론트와 백엔드를 연결해주는 함수
try {//에러 발생 대비 함수 - try안의 실행문을 감시하다가, 에러가 발생 되면 catch안의 실행문이 실행됨.
// todo 비동기 코딩을 해야함
let response = await DeptService.getAll();// 화면이 뜨면 이 함수가 실행되게 해야함 - getAll내부에 promise함수를 가지고 있어 이게 파일이 실행되면 실행되므로 비동기 코딩이 가능해진다.
// 콘솔 출력 : response.data
console.log(response.data);// ❗❗❗이거의 역할은 response.data가 기다려지지 않고 console이 실행되면 오류가 발생하게 된다. 그 오류를 만들게 하기 위해 console을 사용
//바인딩 속성 dept에 저장
this.dept = response.data.dept;//response.data가 josn파일을 의미한다.
//❗❗❗여기서 data는 getAll함수가 가지는 속성(html로 치면 body로 코드들이 적히는 위치이다.)이다.
//❗❗❗정확히는 josn의 data영역에 정의된 속성인 dept를 가져온다는 말이다.
} catch (error) {
console.log(error);
}
}
필기가 너무 지저문하니 다시 코드만 정리해보자면
async retrieveDepts(){
try {
let response = await DeptService.getAll();
console.log(response.data);
this.dept = response.data.dept;
} catch (error) {
console.log(error);
}
}
변수에 getAll함수를 넣어주고 await을 달아주었다. 그리고 작동이 안되면 에러가 나게 하기 위해 console에 json파일을 찍히게 해주었고, 정의해놓은 속성에 json파일의 dept속성을 담아주었다. 에러가 나면 error가뜨게 catch에 넣어주었다. 이것을 하나의 함수로 만들어 mounted에 넣어주면된다.
mounted() {
// 여기에 어떤것이든 정의해주면 화면이 뜰대 실행됨
// 화면이 뜰때 부서조회를 해보자
this.retrieveDepts();
}

결과

watch는 특정 글자를 금지시켜 금지된 글자가 입력되면 alert를 띄워주는 기능이다.

watch: {
// TODO: 사용법 : watch:{ 바인딩속성: function(value){실행문}}
inputText: function(value){
// TODO: 1) value == 새로 입력된 문자열
// TODO: 2) 문자열.indexOf(찾을문자열) :
// TODO: => 찾을문자열 있으면 그위치의 인덱스번호를 가져오기, 없으면 -1
let pos = value.indexOf(this.ftext);
// TODO: 찾을문자열이(안되) inputText 에 있으면
if(pos > -1) {
alert("금지문자가 입력되었습니다.");
}
}
}
}
utils파일에 common파일을 만들어서 다음과 같이 만든다.
import axios from "axios";
// 인터넷 주소 정의 해놓기 - 해놓으면 다음에 임포트만으로 사용가능
export default axios.create({
baseURL:" http://localhost:8080",// 기본 인터넷 주소(도메인) 정의
headers:{ "Content-type": "application/json"}//통신 문서 규격 정의 : .html, .jpg, .json처럼 파일 형태를 정의 해야함
// application은 프로그램을 의미하고 이 프로그램을 json파일로 연결 할것이다 라는 의미이다.
}) // 내보내기 한 것
json파일을 가져올때마다 해줘야하는 과정인데 이렇게 파일로 만들어서 한번 해주면 담에 이 파일만 임포트 해주면된다.
src폴더에 servicies폴더를 만들어 여기에 json을 읽어주는 함수를 만든다.
import http from "../utils/HttpCommon";
class CustomerService{// json읽어주는 함수를 만들자.
getAll(){
return http.get("/customer.json")
}
}
export default new CustomerService();
<script>
import CustomerService from "../services/CustomerService";
export default {
data() {
return {
customer : []
}
},
mounted() {
this.retreiveCustomer();
},
methods: {
async retreiveCustomer(){
try {
let response = await CustomerService.getAll();
console.log(CustomerService.data);
this.customer = response.data.customer
} catch (error) {
console.log(error)
}
}
}
}
</script>
선생님 추천 플러그인
프로젝트를 만들때마다 jdk버전을 바꿀수 있다는 것을 알게 되었다. 나는 21을 사용했는데 수업에서는 17을 사용한다. 프로젝트시 팀원들과 같은 버전을 사용하는 것이 중요하다.