코딩애플 강의를 통해 배운 Vue를 정리한 글입니다.
2025년 2월 21일
Part 3 : 인스타그램 만들기
npm install axios
// 형식에 맞게 get post put delete를 사용하기
import axios from 'axios'
axios.get(`https://codingapple1.github.io/vue/more${this.count}.json`)
.then((res) =>{
this.postData.push(res.data);
this.count++
})
.catch((err)=>{
console.log(err)
})
FileReader() vs URL.createObjectURL()| 기능 | FileReader() | URL.createObjectURL() |
|---|---|---|
| 변환 방식 | 이미지 → 문자열 | 이미지 → 임시 URL |
| 특징 | 저장 및 재사용 가능 | 새로고침 시 URL 사라짐 |
| 사용법 | reader.readAsDataURL(file) | URL.createObjectURL(file) |
URL.createObjectURL(file[0])console.log()로 출력하면 blob 형식이 나옴 (binary 데이터를 object로 변환한 것)<input type="file" multiple> 속성 추가<input type="file" accept="image/*">file.type 체크 필요!<!-- index.html -->
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/cssgram/0.1.12/cssgram.min.css"
integrity="sha512-kr3JaEexN5V5Br47Lbg4B548Db46ulHRGGwvyZMVjnghW1BKmqIjgEgVHV8D7V+Cbqm/VBgo3Rcbtv+mGLoWXA=="
crossorigin="anonymous"
/>
npm install mitt
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import mitt from 'mitt'
let emitter = mitt();
let app = createApp(App);
//globalProperties은 글로벌한 변수 보관함
//자주쓰는 라이브러리는 app.config.globalProperties를 사용하면 좋음 그러면 import해볼 필요 없이 this.axios로 사용이 가능함
app.config.globalProperties.emitter = emitter;
app.mount('#app')
// App.vue
this.emitter.emit('작명',데이터)
this.emitter.on('작명', ()=>{
});
npm install vuex@next --save
// store.js
import { createStore } from 'vuex'
const store = createStore({
state(){
return {}
},
})
export default store
// main.js
import store from './store.js'
app.use(store).mount('#app')
//불러오기
$store.state.저장한데이터
// store.js에 state수정방법 정의
// store.js에 수정요청
// store.js에 메소드 추기
mutations: {
함수(state){
state.데이터 = "내가바꾸고 싶은 것"
}
}
//컴포넌트에서 store.js에 수정요청
$store.commit('함수')
//state 값 변경요청을 할 때 data도 같이 보낼 수 있다
$store.commit('함수', data)
//store.js에서 매개변수는 대부분 state, payload이런식으로 작명한다
actions: {
getData() {
바꾸기
}
}
//actions를 호출
$store.dispatch('getData)
//actions에서도 commit를 통해 mutations을 호출 할 수 있는데
//이럴 때는 작동시킬 함수의 파라미터에 context를 넣어줘야함
getData(context) {}
context.commit('setMore', res.data)
// 1 dispatch('함수')
// 2 ajax로 데이터 가져옴
// 3 mutations를 이용해서 state에 저장
계산 결과를 저장하는 함수들을 적을 때는
이게 처음 페이지 로드될 때 한번만 호출하고 그리고 그 값을 간직만 하고 뱉어줌
즉 한번 더 실행을 안한다는 뜻임
물론 값이 변경되면 바뀌긴함
그리고 얘는 함수이름만 써야됨 소괄호 쓰는거아님
계산 결과를 저장하는 놈이기 때문
//이런식으로 state에 있는걸 저렇게 적을 수 있음
import {mapState} from 'vuex';
...mapState(['name', 'likes'])
//그리고 그냥 {{name or likes}} 이렇게 적으면 state값을 쓸 수 있음
//만약 name', 'likes이런게 변수명이 겹칠 수 있는데 이럴때는 object형식으로 써도됨
({작명 : 'name'})
//mutations 함수를 수정할 때 편하게 사용하려면
...mapMutations(['함수'])
// 이렇게 적어서 호출도 가능하다
//=> methods에 적기
import {mapMutations} from 'vuex';
//그리고 event에서는 그냥 함수명(전달할 데이터)
//이렇게 편하게 적용이 가능함
vue add pwa or npm install @vue/cli-plugin-pwa
// manifest.json / service-worker.js가 생겼으면 성공
// service-worker.js는 웹페이지 구동에 필요한 html css js img를 하드에 저장해놓고그걸 사용함
setup() {}setUp(props, data);
props; //이건 프롭스
data; //이거는 emit이나 뭐 다른것 등등있음
useStore().state.저장한값useStore().commit dispatch 등 사용 가능