๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?

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.