Vue.js๋ฅผ ์ฒ์ ๋ฐฐ์ฐ๋ ๋ถ๋ค์ ์ํ ๊ฐ์์ ๋๋ค. ๊ณต์ ๋ฌธ์๋ฅผ ์๊ธฐ ์ฝ๊ฒ ์ํํ ์ ์๋๋ก ๊ฐ๋จํ ์์ ๋ค๊ณผ ๊ทธ๋ฆผ๋ค๋ก ์ค๋ช ์ด ์ ๋์ด์์ต๋๋ค.
Vue3 ๊ธฐ๋ณธ ๊ฐ๋ (๋ฐ์์ฑ, ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ, ์ปดํฌ๋ํธ ๋ฑ)
Composition API ๊ฐ๋ฐ ๋ฐฉ๋ฒ
vue-notion ํจํค์ง๋ฅผ ํตํ Notion ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
์ด ๊ฐ์๋ Vue.js ๊ณต์๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ง ๊ฐ์์ ๋๋ค.
โ
์ค๋ก์ง ํ์ํ ๋ด์ฉ๋ง ๊น๋ํ๊ณ ๋น ๋ฅด๊ฒ ์๋ ค๋๋ฆฌ๋๋ก ํ ๊ฑฐ์์!
โ
๋ถํ์ํ๊ฒ ์ง์ง ๋๋ ์๊ฐ (์ฝ๋ ์ฐ๋ ์๊ฐ, ํ๋ฆฐ ์ฝ๋ ๋ค์ ์ฐ๋ ์๊ฐ)์ด ์์ด์!
โ
๊ฐ๋จํ๊ฒ ์์ฝ๋์ด์์ด์ ๋๋ถ๋ถ ๊ฐ์๊ฐ 10๋ถ ๋ฏธ๋ง! ํ์ง๋ง ์ธ์ธํ๊ฒ ์๋ ค๋๋ฆด ์ ์๋๋ก ์์ถ๋์ด์์ต๋๋ค!
โ
ํ๋ฉด์ ๊ทธ๋๋ก์ธ์ฑ ๋ง๋งํ๋ ์๊ฐ? ๊ฑฐ์ ์์ต๋๋ค! ์ง์คํ์
์ผํด์!
์ด ๊ฐ์๋ Section 2๋ถํฐ ๊ฐ์๋ง๋ค ๊ณผ์ ๊ฐ ์์ต๋๋ค.
Section 4๊น์ง๋ ์ฐ์ต์ด๋ฉฐ, Section 5๋ถํฐ ๊พธ์คํ ๊ณผ์ ๋ฅผ ์ ์ํํ์ ๋ค๋ฉด ์ด๋ฐ ์ฌ์ดํธ๋ฅผ ๋ง๋ค ์ ์์ด์.
์์ํ ์ค๋ช
๋ณด๋ค ์ด๋ค ๊ฒ๋ค์ ๋ฐฐ์ฐ๋์ง ๊ถ๊ธํ์์ฃ ?
์๋์์ ๋ฐ๋ก ์์๋ณผ๊ฒ์!
์์ํ๊ธฐ์ ์์ ์ปดํจํฐ์ ์ค์นํ๊ณ ์ค์ ํ ๊ฒ๋ค์ ๋ค๋ฃน๋๋ค.
๊ฐ๋ฐ์ ํ์ํ Chrome๊ณผ Vue.js Devtools, VSCode, Node.js๋ฅผ ์ค์นํฉ๋๋ค.
Visual Studio Code๋ฅผ ๋ชจ๋ฅด์๋ ๋ถ๋ค ์ํด์ ๊ฐ๋จํ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
VSCode๋ฅผ ์ฌ์ฉํ๋ฉด์ ๊ฐ์ด ์ฐ๋ฉด ์ข์ ํ์ฅํ๋ก๊ทธ๋จ๋ค์ ์ค์นํฉ๋๋ค.
์์ ์ฝ๋๋ค์ด ๋ค์ด์๋ ํ์ผ๋ค์ ๋ค์ด๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ค๋ฃน๋๋ค
Vue.js ๋ฌธ๋ฒ์ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋ค๋ฃจ๊ธฐ ์์ํฉ๋๋ค.
์ดํด๋ฅผ ๋๊ธฐ ์ํด HTML ํ์ผ ํ๋๋ง์ผ๋ก ์งํํฉ๋๋ค.
Vue๋ฅผ ์์ํ๊ธฐ ์ํด createApp ํจ์๋ฅผ ๋ถ๋ฌ์ค๊ณ app์ ๋ง๋๋ ๋ฒ์ ๋ฐฐ์๋๋ค.
Vue.js์์ ํต์ฌ ๊ฐ๋ ์ด๋ผ ํ ์ ์๋ ์ปดํฌ๋ํธ(Component)์ ๋ํด์ ๋ค๋ฃน๋๋ค.
์ปดํฌ๋ํธ ์์์ HTML์ ์ข ๋ ํจ์จ์ ์ผ๋ก ๊ทธ๋ฆฌ๊ธฐ ์ํ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ(Data Binding)์ ๋ฐฐ์๋๋ค.
์ํธ์์ฉ์ ํตํด ์ข ๋ ๋์ ์ธ ์น์ ๋ง๋ค๊ธฐ ์ํด ํ์ํ ๋ฐ์์ฑ(Reactivity)์ ๊ฐ๋ ์ ๋ค๋ฃน๋๋ค.
์ปดํฌ๋ํธ์์ HTML ์์๋ฅผ ๋ค์ํ๊ฒ ์์ ํ ์ ์๋ ๋๋ ํฐ๋ธ์ ๋ํด ๋ค๋ฃน๋๋ค.
์์ฑ์ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ ์ ์๋ v-bind์ ๋ํด ์์๋ณผ๊ฒ๋๋ค!
v-for๋ฅผ ํตํด์ ๋ฐ๋ณต์ ์ผ๋ก ํ๊ทธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ค๋ฃจ์ด๋ณด๊ฒ ์ต๋๋ค.
v-if๋ v-show๋ฅผ ํตํด์ ์กฐ๊ฑด์ ๋ฐ๋ผ ํ๊ทธ๋ฅผ ๋ํ๋๊ฑฐ๋ ์ฌ๋ผ์ง๊ฒ ํ ์ ์์ต๋๋ค.
ํ๊ทธ์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ๋์์ฃผ๋ v-on์ ๋ํด์ ๋ค๋ฃน๋๋ค.
์ฌ์ฉ์๊ฐ ์ํธ์์ฉ์ ํตํด ๋ณํ์ํฌ ์ ์๋ ์ ๋ ฅํผ์์ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ ํ ์ ์๋ v-model์ ๋ํด ๋ค๋ฃน๋๋ค.
๋ฐ์์ฑ์ ์ด์ฉํ ์ ์๋ ref์ reactive, ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ด์ฉํด์ ์ถ๊ฐ์ ์ธ ์์ ์ ํ ์ ์๋ computed์ watcher๋ฅผ ๋ค๋ฃน๋๋ค.
๋ฐ์ํ ๊ฐ์ฒด์ธ reactive์ ref ๋ฅผ ๋น๊ตํด์ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ๋ค๋ฃน๋๋ค.
๋ฐ์ํ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ ๋๋ค๋ฅธ ๊ฐ์ ๋ง๋๋ computed์ ๋ํด์ ๋ค๋ฃน๋๋ค.
๋ฐ์ํ ๊ฐ์ฒด์ ๋ณํ์ ๋ฐ๋ผ ์ถ๊ฐ์ ์ธ ์์ ์ ํ ์ ์๋ Watcher์ ๋ํด์ ๋ค๋ฃน๋๋ค.
์ปดํฌ๋ํธ ํ์ผ(.vue)์ ๋ง๋ค์ด์ ์ปดํฌ๋ํธ๋ฅผ ์ข ๋ ์ฌํ์ ์ผ๋ก ๋ค๋ฃจ์ด๋ด ๋๋ค.
์ปดํฌ๋ํธ๋ฅผ ์ข ๋ ํ์ฉํ ์ ์๋ vue ํ์ผ, Single File Component!!
npm์ ํตํด Vue ๊ฐ๋ฐ์ ํ๊ธฐ์ ์ต์ ์ธ ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ฐฐ์๋๋ค.
script๋ฅผ ์ข ๋ ํจ์จ์ ์ด๊ฒ ํ์ฉํ ์ ์๋ script setup
style์ ์ปดํฌ๋ํธ ์์์๋ง ์ ์ฉํ๋ style scoped
์ปดํฌ๋ํธ๊ฐ ์์ฑ๋๊ณ ์ฌ๋ผ์ง๋ ๊ณผ์ ์์ ํน์ ์์ ์ ์ํํ ์ ์๋ Life Cycle Hook์ ๋ํด ๋ฐฐ์๋๋ค.
template์์ ref๋ฅผ ์ฌ์ฉํด DOM์ ์กฐ์ํด๋ณด์์!
๋น๋๊ธฐ์ ์ผ๋ก ์๋ฒ์์ ํ์ํ ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฅด๋ ๋น๋๊ธฐ ์ปดํฌ๋ํธ์
๋์ ์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ๊ทธ๋ฆด ์ ์๋ ๋์ ์ปดํฌ๋ํธ์ ๋ํด ๋ฐฐ์๋๋ค.
๋ธ๋ก๊ทธ์ฒ๋ผ ๋ ธ์ (Notion)์ ์๋ํฐ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ฐฐ์๋๋ค.
Notion์ ๋ชจ๋ฅด์๋ ๋ถ๋ค์ ์ํด ํ์๊ฐ์ ๋ถํฐ ๊ฐ๋จํ ์ฌ์ฉ๋ฒ๊น์ง ๋ค๋ฃน๋๋ค!
vue-notion ํจํค์ง๋ฅผ ํตํด Notion ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ฐฐ์๋๋ค.
์ปดํฌ๋ํธ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ค๋ฃน๋๋ค
์์ ์ปดํฌ๋ํธ์์ ํ์ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ Props์ ๋ํด์ ์์๋ด ๋๋ค.
ํ์ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๋ Emits์ ๋ํด์ ์์๋ด ๋๋ค.
์์ ์ปดํฌ๋ํธ์์ ๊น์ ํ์ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๋ Provide์ Inject์ ๋ํด์ ๋ค๋ฃน๋๋ค.
์ปดํฌ๋ํธ์ ๋ฃ์ ์์ฑ์ ์ด๋ป๊ฒ ๋ค๋ฃฐ ์ ์๋ ์ง attrs๋ฅผ ํตํด ์์๋ด ๋๋ค.
์ปดํฌ๋ํธ์ v-model์ ์จ์ผํ ๋ ์ด๋ป๊ฒ ํด์ผํ๋ ์ง ์์๋ด ๋๋ค.
์ปดํฌ๋ํธ์ template์ ์์ ์ปดํฌ๋ํธ์์ ๋ค๋ฃฐ ์ ์๋ slot์ ๋ํด ๋ค๋ฃน๋๋ค.
์ด๋ ๊ฒ ๋ด๋ ์ ๋ชจ๋ฅด์๊ฒ ๋ค๋ฉด ๋ฌด๋ฃ๊ฐ์๋ฅผ ๋ช ๊ฐ ๋ณด์๊ธธ ๋ฐ๋๋๋ค!
์ด๋ค ๋๋์ธ์ง ํโ๏ธ์์ค๊ฑฐ์์
ํ์ต ๋์์
๋๊ตฌ์ผ๊น์?
Vue.js ๋ฌธ์๋ฅผ ์ฝ๊ธฐ๊ฐ ์ด๋ ต๊ฑฐ๋ ๊ท์ฐฎ์ ์ฌ๋
Vue.js ์ฒ์ ์ ๋ฌธํ๋ ์ฌ๋
ํ๋ก ํธ์๋ ์ ๋ฌธ์
์ ์ ์ง์,
ํ์ํ ๊น์?
HTML ๊ธฐ๋ณธ (input ํ๊ทธ์ value ์์ฑ์ ์ฐ๋๊ฑฐ ์์๋์?)
CSS ๊ธฐ๋ณธ (border, margin, padding ๋ฑ ์๋ ์ ๋)
Javascript ๊ธฐ๋ณธ (console.log๋ ํ์ดํ ํจ์๋ฅผ ์๋ ์ ๋)
98
๋ช
์๊ฐ์
9
๊ฐ
์๊ฐํ
8
๊ฐ
๋ต๋ณ
4.9
์
๊ฐ์ ํ์
1
๊ฐ
๊ฐ์
๋จ์ํ ๋ธ๋ก๊ทธ ์ฌ์ดํธ๋ฅผ ๋ฐ์ด๋์ด ์ฌ๋ฏธ์๊ณ ๋
์ฐฝ์ ์ด๊ณ ์ ๊ธฐํ ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ด์ฌ์ด ๋ง์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๊ณผ์ ์์ ๊ฒช์ ๊ฒฝํ์ ๋ชจ๋์๊ฒ ์ฝ๊ฒ ๊ณต์ ํ๋ ๊ฒ์ ๋ชฉํ๋ก ๊ฐ์, ๋ธ๋ก๊ทธ, ์ ํ๋ธ, SNS ๋ฑ์ผ๋ก ๋์๊ฐ๋ ํ๋ก ํธ์๋ ๋ธ๋ก๊ฑฐ์
๋๋ค.
๋ธ๋ก๊ทธ : https://blogcreator.blog
์ ์ฒด
32๊ฐ โ (3์๊ฐ 20๋ถ)