๐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. ์ด์ 1 ๋ค์