๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‘“Vue4

[Vue]Want Reuse? Use Composables, ์žฌ์‚ฌ์šฉ์—๋Š” ๋ฏน์Šค์ธ ๋Œ€์‹  ์ปดํฌ์ €๋ธ” Intro ๊ธฐ์กด, ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ Vue2์—์„œ๋Š” ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ Mixin(๋ฏน์Šค์ธ)์„ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. Vue3๋กœ ๋„˜์–ด์˜ค๋ฉด์„œ Mixin์„ ๋Œ€์ฒดํ•˜๋Š” Composables์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. Vue3 ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋Š” Mixin ๋Œ€์‹  Composables๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์ถ”์ฒœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒ๊ฐ๋ณด๋‹ค Composables๋ฅผ ์†Œ๊ฐœํ•ด์ฃผ๋Š” ๋ฌธ์„œ(ํ˜น์€ ๊ธ€)๊ฐ€ ํ•œ๊ตญ์–ด๋กœ ๋œ ๊ฑด ์—†๋”๊ตฐ์š”. ์•„์ง Vue3๋Š” ํ•œ๊ตญ์—์„œ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ์กฐ๊ธˆ ์ ์€ ๊ฒŒ ์•„๋‹Œ๊ฐ€ ์‹ถ๋„ค์š”. ์–ด์จŒ๋“  ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์š”์•ฝํ•˜๋Š” ๊ธ€์ด๊ฒ ์ง€๋งŒ Composables์— ๋Œ€ํ•ด์„œ ์ฃผ์ €๋ฆฌ์ฃผ์ €๋ฆฌ ๋– ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค Result // App.vue Mouse position is at: {{ x }}, {{ y }} ... // mouse.js import {onMounted,.. 2022. 5. 12.
[Vue]Pass Object as Router Params, ๋ผ์šฐํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์˜ค๋ธŒ์ ํŠธ ๋„˜๊ธฐ๊ธฐ Intro Vue์—์„œ๋Š” ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด Vue Router๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Router๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๋‹จ์ˆœํžˆ ํŽ˜์ด์ง€๋งŒ์„ ์˜ฎ๊ธฐ๋Š” ๊ฒŒ ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์˜ฎ๊ธฐ๊ณ  ์‹ถ์€ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ๋ฅผ ์œ„ํ•ด query์™€ params๋ฅผ Vue Router๋Š” ์ค€๋น„ํ•ด ๋‘์—ˆ์ฃ . ํ•˜์ง€๋งŒ ์š”๊ฒŒ ์š”๊ฒŒ ๋ง˜๋Œ€๋กœ ์•ˆ ๋  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ Object ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๊ณ  ์‹ถ์„ ๋•Œ ๋ง์ด์ฃ . Result // PUSH const router = useRouter() router.push({ name: 'xxx', params: { 'A': JSON.stringify({ stringify: 'JSON.stringfy', GOOD: 'So GOOD!!!' }) } }) // RECEIVE const route = useRo.. 2022. 4. 29.
[Vue]Reactivity System, ๋ทฐ์—์„œ ๊ฐ’์ด ๋ฐ”๋€” ๋•Œ ์ผ์–ด๋‚˜๋Š” ์ผ Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ๊ฐœ๋ฐœ์ž ์œ„์„ฑ๋นˆ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ Dynamic Components์— ์ด์–ด์„œ Vue์˜ Reactivity ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์ € ๋จธ๋ฆฟ์†์—๋งŒ ์žˆ๋Š” ๊ฑฐ๋ณด๋‹จ ๊ธ€๋กœ ๋‚จ๊ธฐ๋Š” ๊ฒŒ ๊ธฐ์–ต๋„ ์ž˜ ๋˜๊ณ , ๊ธ€์„ ์“ฐ๋ฉด์„œ๋„ ๋” ์ฐพ์•„๋ณด๊ฒŒ ๋˜๋‹ˆ ์ฐธ ์ข‹์€ ๊ฑฐ ๊ฐ™์•„์š”. ํ•˜์ง€๋งŒ ์—ญ์‹œ ๊ธ€์„ ์“ฐ๋Š” ๊ฒŒ ์‰ฝ์ง„ ์•Š๋„ค์š”. Vue Reactivity Vue์˜ ์žฅ์ ์ด๋ผ๊ณ  ํ•˜๋ฉด ๊ผญ ๋“ฑ์žฅํ•˜๋Š”๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ Data Binding์ž…๋‹ˆ๋‹ค. Vue์˜ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์€ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๊ฐ’๊ณผ ๋ฐ์ดํ„ฐ ๊ฐ’์ด ์—ฐ๊ฒฐ์ด ๋˜์–ด ์„œ๋กœ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๊ฐ€ Vue์˜ Reactivity ์‹œ์Šคํ…œ ๋•๋ถ„์ž…๋‹ˆ๋‹ค. Vue Guide Reactivity in Depth .. 2021. 12. 26.
[Vue]Dynamic components, ๋‚ด๊ฐ€ ์›ํ•  ๋•Œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ๊ฐœ๋ฐœ์ž ์œ„์„ฑ๋นˆ์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ์— Vue.js ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ๋†ˆ์ด๋‹ˆ ๋ฐ”๋กœ ์จ๋จน๊ณ  ์‹ถ์–ด ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ์ฃ . ํ”„๋กœ์ ํŠธ ์ œ๋ชฉ์€ 'everything', '๋Œ€์‹œ๋ณด๋“œ ์œ„์— ์ƒ๊ฐ๋‚˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์˜ฌ๋ ค๋ณด์ž'๋ผ๋Š” ์•„์ด๋””์–ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฐจ๊ทผ์ฐจ๊ทผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋งŒ๋‚œ 'Dynamic components', ๋™์  ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๊ฒช์—ˆ๋˜ ๊ฒƒ๋“ค์„ ์˜ค๋Š˜ ์ ์–ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. Result export default{ // ... data() { return { // ... , currentTab: 'VueRouter' } }, computed: { componentLoader() { const tab = this.currentTab return () =>import(`@/com.. 2021. 12. 26.