Development/Vue.js13 Vue.js - Vuex Core Concepts ๐ Vuex Core Concepts |Vuex ํต์ฌ ์ปจ์ State Mutations Actions Getters |State “์ค์์์ ๊ด๋ฆฌํ๋ ๋ชจ๋ ์ํ ์ ๋ณด (data)” Vuex๋ single state tree๋ฅผ ์ฌ์ฉ ์ฆ, ์ด ๋จ์ผ ๊ฐ์ฒด๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ํฌํจํ๋ “์๋ณธ ์์ค(single source of truth)”์ ์ญํ ์ ํจ ์ด๋ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ง๋ค ํ๋์ ์ ์ฅ์๋ง ๊ฐ๊ฒ ๋๋ค๋ ๊ฒ์ ์๋ฏธํจ ์ฌ๋ฌ ์ปดํฌ๋ํธ ๋ด๋ถ์ ์๋ ํน์ state๋ฅผ ์ค์์์ ๊ด๋ฆฌํ๊ฒ ๋จ ์ด์ ์ ๋ฐฉ์์ state๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์ง์ ํ์ธํด์ผ ํ์ Vuex๋ฅผ ํ์ฉํ๋ ๋ฐฉ์์ Vuex Store์์ ๊ฐ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ๋ state๋ฅผ ํ ๋์ ํ์ ๊ฐ๋ฅ State๊ฐ ๋ณํํ๋ฉด ํด๋น state๋ฅผ ๊ณต์ ํ๋.. 2022. 5. 13. Vue.js - Vuex Intro ๐ Vuex Intro. |Vuex “Statement management pattern + Library” for vue.js ์ํ ๊ด๋ฆฌ ํจํด + ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํ(state)๋ฅผ ์ ์ญ ์ ์ฅ์๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ์ง์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํ๊ฐ ์์ธก ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก๋ง ๋ณ๊ฒฝ๋ ์ ์๋๋ก ๋ณด์ฅํ๋ ๊ท์น ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์ปดํฌ๋ํธ์ ๋ํ ์ค์ ์ง์ค์ ์ ์ฅ์ ์ญํ Vue์ ๊ณต์ devtools์ ํตํฉ๋์ด ๊ธฐํ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณต |State state๋ ๊ณง data์ด๋ฉฐ ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ์ด ๋๋ ์์ ์ค์์์ ๊ด๋ฆฌํ๋ ๋ชจ๋ ์ํ ์ ๋ณด |์ํ ๊ด๋ฆฌ ํจํด ์ปดํฌ๋ํธ์ ๊ณต์ ๋ ์ํ๋ฅผ ์ถ์ถํ๊ณ ์ด๋ฅผ ์ ์ญ์์ ๊ด๋ฆฌ ํ๋๋ก ํจ ์ปดํฌ๋ํธ๋ ์ปค๋ค๋ view๊ฐ ๋๋ฉฐ ๋ชจ๋ ์ปดํฌ๋ํธ๋ ํธ๋ฆฌ์ ์๊ด์์ด ์ํ์ ์ก์ธ์ค ํ๊ฑฐ๋ ๋์์.. 2022. 5. 13. Vue.js - Vuex๋ฅผ ํ์ฉํ Todo App ๊ตฌํํ๊ธฐ ์ต์์ ๋ฃจํธ - App.vue App.vue์ ์์ Component : TodoList.vue, TodoForm.vue TodoList.vue์ ์์ Component: TodoListItem.vue โindex.js - Vuex core concepts๋ฅผ ์์ฑ import Vue from 'vue' import Vuex from 'vuex' import createPersistedState from 'vuex-persistedstate' Vue.use(Vuex) export default new Vuex.Store({ plugins: [ createPersistedState() ], state: { //data todos:[], }, getters: { //computed //ํ์ฌ ๋๋ ์ผ์ ๊ฐ์ /.. 2022. 5. 11. Vue.js - Youtube API๋ฅผ ์ด์ฉํด props์ emit ํ์ฉํ๊ธฐ โ๊ฒฐ๊ณผ - inputํ๊ทธ์ ์ํ๋ ๊ฒ์์ด๋ฅผ ์ ๋ ฅํ๊ณ ์ํฐ๋ฅผ ๋๋ฅด๋ฉด Video List์๋์ ์ ํ๋ธ video ์์ ๋ชฉ๋ก์ด ๋ฌ๋ค! - Video List๋ฅผ ํด๋ฆญ ์ ํด๋น ๋น๋์ค๊ฐ Video Detail์ ๋์จ๋ค! โ์ฐ๋ฆฌ๊ฐ ๊ตฌํํด์ผํ Props์ Emit ๊ด๊ณ๋ App.vue -- Youtube API๋ฅผ ํตํด ์์ฒญ๊ณผ ์๋ต ์ฃผ๊ณ ๋ฐ์, ๊ทธ ์ธ ๋ค๋ฅธ vue๋ค๊ณผ emit & props App.vue TheSearchBar.vue -- App.vue์ emit ๊ฒ์ VideoList.vue -- App.vue์ porps & emit, VideoListItem.vue์ props & emit Video List VideoListItem.vue -- VideoList.vue์ emit & props {{video.sn.. 2022. 5. 11. Vue.js - Vue Router ๐Vue Router |Vue Router “Vue.js ๊ณต์ ๋ผ์ฐํฐ” ๋ผ์ฐํธ(route)์ ์ปดํฌ๋ํธ๋ฅผ ๋งคํํ ํ, ์ด๋ค ์ฃผ์์์ ๋ ๋๋งํ ์ง ์๋ ค์ค SPA ์์์ ๋ผ์ฐํ ์ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณต |Vue Router Start! ํ๋ก์ ํธ ์์ฑ ๋ฐ ์ด๋ vue create my-router-app cd my-router-app Vue Router plugin์ค์น (Vue CLI ํ๊ฒฝ) vue add router [์ฃผ์] ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์๋ ๋์ค์ ์ถ๊ฐํ๊ฒ ๋๋ฉด App.vue๋ฅผ ๋ฎ์ด์ฐ๋ฏ๋ก, ํ๋ก์ ํธ ๋ด์์ ๋ค์ ๋ช ๋ น์ ์คํํ๊ธฐ ์ ์ ํ์ํ ๊ฒฝ์ฐ ํ์ผ์ ๋ฐฑ์ (์ปค๋ฐ)ํด์ผ ํจ commit ์ฌ๋ถ(Yes) Warn There are uncommitted changes in the current.. 2022. 5. 9. Vue.js - Pass Props & Emit Events ๐Pass Props & Emit Events |์ปดํฌ๋ํธ ์์ฑ Vue app์ ์์ฐ์ค๋ฝ๊ฒ ์ค์ฒฉ๋ ์ปดํฌ๋ํธ ํธ๋ฆฌ๋ก ๊ตฌ์ฑ ์ปดํฌ๋ํธ๊ฐ ๋ถ๋ชจ-์์ ๊ด๊ณ๊ฐ ๊ตฌ์ฑ๋๋ฉฐ ์ด๋ค ์ฌ์ด์ ํ์ฐ์ ์ผ๋ก ์์ฌ ์ํต์ด ํ์ํจ ๋ถ๋ชจ๋ ์์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ**(Pass props)ํ๋ฉฐ, ์์์ ์์ ์๊ฒ ์ผ์ด๋ ์ผ์ ๋ถ๋ชจ์๊ฒ ์๋ฆผ(Emit event)** ๋ถ๋ชจ์ ์์์ด ๋ช ํํ๊ฒ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ฒฉ๋ฆฌ๋ ์ํ๋ฅผ ์ ์งํ ์ ์์ “props๋ ์๋๋ก, events๋ ์๋ก” ๋ถ๋ชจ๋ props๋ฅผ ํตํด ์์์๊ฒ ‘๋ฐ์ดํฐ’๋ฅผ ์ ๋ฌํ๊ณ , ์์์ events๋ฅผ ํตํด ๋ถ๋ชจ์๊ฒ ‘๋ฉ์์ง’๋ฅผ ๋ณด๋ |์ปดํฌ๋ํธ ๊ตฌ์กฐ ํ ํ๋ฆฟ (HTML) ์คํฌ๋ฆฝํธ (JavaScript) ์คํ์ผ (CSS) |ํ ํ๋ฆฟ(HTML) HTML์ body ๋ถ๋ถ ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์์ฑ .. 2022. 5. 9. Vue.js - Babel & Webpack ๐Babel & Webpack |Babel — ๋ฒ์ ๋ค์ด๊ทธ๋ ์ด๋ ๋๊ตฌ “JavaScript compiler” ES6 ์ดํ ๋ฒ์ ์ ES5 ๋ฒ์ ์ดํ๋ก ๋ค์ด๊ทธ๋ ์ด๋! ์๋ฐ์คํฌ๋ฆฝํธ์ ECMAScript 2015+ ์ฝ๋๋ฅผ ์ด์ ๋ฒ์ ์ผ๋ก ๋ฒ์ญ/๋ณํํด ์ฃผ๋ ๋๊ตฌ ๊ณผ๊ฑฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ํํธํ์ ํ์คํ์ ์ํฅ์ผ๋ก ์ฝ๋์ ์คํํธ๋ผ์ด ๋งค์ฐ ๋ค์ ์ด ๋๋ฌธ์ ์ต์ ๋ฌธ๋ฒ์ ์ฌ์ฉํด๋ ์ด์ ๋ธ๋ผ์ฐ์ ํน์ ํ๊ฒฝ์์ ๋์ํ์ง ์๋ ์ํฉ์ด ๋ฐ์ ์์ ์ฝ๋(์ต์ ๋ฒ์ )๋ฅผ ๋ชฉ์ ์ฝ๋(๊ตฌ ๋ฒ์ )๋ก ์ฎ๊ธฐ๋ ๋ฒ์ญ๊ธฐ๊ฐ ๋ฑ์ฅํ๋ฉด์ ๊ฐ๋ฐ์๋ ๋ ์ด์ ๋ด ์ฝ๋๊ฐ ํน์ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ์ง ์๋ ์ํฉ์ ๋ํด ํฌ๊ฒ ๊ณ ๋ฏผํ์ง ์์ ์ ์๊ฒ ๋จ |Webpack — “ํ์ผ ๋ฒ๋ค๋ง ๋๊ตฌ”, ๋ฒ๋ค๋ง === ํฉ์น๋ค! “static module bundler” ๋ชจ๋ ๊ฐ.. 2022. 5. 9. Vue.js - Vue CLI ๐Vue CLI |Vue CLI Vue.js ๊ฐ๋ฐ์ ์ํ ํ์ค ๋๊ตฌ ํ๋ก์ ํธ์ ๊ตฌ์ฑ์ ๋์์ฃผ๋ ์ญํ ์ ํ๋ฉฐ Vue ๊ฐ๋ฐ ์ํ๊ณ์์ ํ์ค tool ๊ธฐ์ค์ ๋ชฉํ๋ก ํจ ํ์ฅ ํ๋ฌ๊ทธ์ธ, GUI, Babel๋ฑ ๋ค์ํ tool ์ ๊ณต |Node.js —Django์ ๋น์ท, JavaScript JS =⇒์คํ๊ธฐ, ํ๋ก ํธ์๋/๋ฐฑ์๋ ๋ ๋ค ๊ฐ๋ฅ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ํ๊ฒฝ์์๋ ๊ตฌ๋ํ ์ ์๋๋ก ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ ๋ธ๋ผ์ฐ์ ๋ฐ์ ๋ฒ์ด ๋ ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด์ ํ์์ ํ๊ณ๋ฅผ ํด๊ฒฐ Chrome V8 ์์ง์ ์ ๊ณตํ์ฌ ์ฌ๋ฌ OS ํ๊ฒฝ์์ ์คํํ ์ ์๋ ํ๊ฒฝ์ ์ ๊ณต ์ฆ, ๋จ์ํ ๋ธ๋ผ์ฐ์ ๋ง ์กฐ์ํ ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ SSR ์ํคํ ์ฒ์์๋ ์ฌ์ฉํ ์ ์๋๋ก ํจ |NPM(Node Package Manage.. 2022. 5. 9. Vue.js - SFC(Single File Component) ๐SFC (Single File Component) |Component (์ปดํฌ๋ํธ) ์์ฑ์ ํจ์ → ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํจ. ์ธ์คํด์ค → ์์ฑ์ ํจ์๋ก ๋ง๋ค์ด์ง ๊ฐ์ฒด ๊ธฐ๋ณธ HTML ์๋ฆฌ๋จผํธ๋ฅผ ํ์ฅํ์ฌ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์บก์ํ ํ๋๋ฐ ๋์์ ์ค CS์์๋ ๋ค์ ์ฌ์ฉํ ์ ์๋ ๋ฒ์ฉ์ฑ์ ์ํด ๊ฐ๋ฐ๋ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์๋ฅผ ์๋ฏธ ์ฆ, ์ปดํฌ๋ํธ๋ ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ๋ง๋ค์ด ์ค ๋ฟ๋ง ์๋๋ผ, ์ฌ์ฌ์ฉ์ฑ์ ์ธก๋ฉด์์๋ ๋งค์ฐ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณต Vue ์ปดํฌ๋ํธ === Vue ์ธ์คํด์ค |SFC (Single File Component) Vue์ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๊ฐ๋ฐ์ ํต์ฌ ํน์ง ํ๋์ ์ปดํฌ๋ํธ๋ .vue ํ์ฅ์๋ฅผ ๊ฐ์ง ํ๋์ ํ์ผ ์์์ ์์ฑ๋๋ ์ฝ๋์ ๊ฒฐ๊ณผ๋ฌผ ํ๋ฉด์ ํน์ ์์ญ์ ๋ํ HTML, CSS, JavaScript ์ฝ.. 2022. 5. 9. Vue.js - Lifecycle Hooks ๐Lifecycle Hooks ๊ฐ Vue ์ธ์คํด์ค๋ ์์ฑ๋ ๋ ์ผ๋ จ์ ์ด๊ธฐํ ๋จ๊ณ๋ฅผ ๊ฑฐ์นจ ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ ๊ด์ฐฐ ์ค์ ์ด ํ์ํ ๊ฒฝ์ฐ, ์ธ์คํด์ค๋ฅผ DOM์ ๋ง์ดํธํ๋ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ด DOM๋ฅผ ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ ๋ฑ ๊ทธ ๊ณผ์ ์์ ์ฌ์ฉ์ ์ ์ ๋ก์ง์ ์คํํ ์ ์๋ Lifecycle Hooks๋ ํธ์ถ๋จ ๊ณต์๋ฌธ์๋ฅผ ํตํด ๊ฐ ๋ผ์ดํ์ฌ์ดํด ํ ์ ์์ธ ๋์์ ์ฐธ๊ณ |Lifecycle Hooks์ ์์ GetDog created hook์ vue ์ธ์คํด์ค๊ฐ ์์ฑ๋ ํ์ ํธ์ถ ๋จ created๋ฅผ ์ฌ์ฉํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ๋ฐ์ดํฐ๋ฅผ API ์์ฒญ์ ํตํด ๋ถ๋ฌ์ฌ ์ ์์ 2022. 5. 7. ์ด์ 1 2 ๋ค์