43. Creating Components
npm create vue@latest
์ด์ ์ฝ๋ ์์ฑ์ ์์ํ ์๊ฐ์
๋๋ค.
ํ๋ก์ ํธ๋ฅผ ์ค์นํ ๋ src
๋๋ ํ ๋ฆฌ ์์ ๋ช ๊ฐ์ง ์์ ํ์ผ๋ค์ด ์ ๊ณต๋์์ต๋๋ค.
์ด ํ์ผ๋ค์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ ๊ตฌ์กฐํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ธฐ๋ณธ ์์ ๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํ์ง๋ง, ์ฒ์๋ถํฐ ์์ํ๊ณ ์ถ์ต๋๋ค.
๊ทธ๋์ ๊ธฐ๋ณธ์ ์ธ ๊ฒ์ ์ง์คํ๊ธฐ ์ํด ํ๋ก์ ํธ๋ฅผ ์ ๋ฆฌํ ๊ฒ์
๋๋ค.
์ฐ์ components
์ assets
๋๋ ํ ๋ฆฌ๋ฅผ ์ญ์ ํ ๊ฒ์
๋๋ค.
์ด๋ค์ ํ์ํ์ง ์์ต๋๋ค.
๊ทธ ๋ค์ App
์ปดํฌ๋ํธ ํ์ผ ์์ ์คํ์ผ ๋ธ๋ก์ ์ ๊ฑฐํ ๊ฒ์
๋๋ค.
์ปดํฌ๋ํธ์ CSS๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ ํ ์ฌํญ์
๋๋ค.
์คํ์ผ์ด ์๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋ Vue๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค์ง ์์ต๋๋ค.
์คํฌ๋ฆฝํธ์ ํ
ํ๋ฆฟ ๋ธ๋ก ๋ด์ ์ฝ๋๋ ๊ฐ์ํํ ๊ฒ์
๋๋ค.
์คํฌ๋ฆฝํธ ๋ธ๋ก์์ setup
์์ฑ์ ์ ๊ฑฐํฉ๋๋ค.
์ด ์์ฑ์ ๊ตฌ์ฑ API์ ์ถ์ฝ ๋ฌธ๋ฒ์ด์ง๋ง, ํน๋ณํ ์ธ๊ธํ์ง ์๋ ํ ์ด ์น์
์์๋ ์ฌ์ฉํ์ง ์์ ๊ฒ์
๋๋ค.
๋จ์ผ ํ์ผ ์ปดํฌ๋ํธ(SFC)๊ฐ ์ ํจํ๋ ค๋ฉด ์ต์ํ ํ
ํ๋ฆฟ ๋ธ๋ก์ด ์์ด์ผ ํ๋ฉฐ, ํ
ํ๋ฆฟ์๋ ์ต์ ํ๋์ ๋ฃจํธ ์์๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค.(vue3์์๋ ํ๋์ ๋ฃจํธ ์์๊ฐ ๊ผญ ํ์ํ์ง ์๋ค.)
ํ
ํ๋ฆฟ์์ ๊ฐ๋จํ ์ธ์ฌ๋ง์ ๋ด์ ๋ฌธ๋จ์ ์ถ๊ฐํ ๊ฒ์
๋๋ค.
์คํฌ๋ฆฝํธ ๋ธ๋ก์์๋ ์ปดํฌ๋ํธ ์ค์ ์ ์ํ ๊ฐ์ฒด๋ฅผ ๋ด๋ณด๋ผ ๊ฒ์
๋๋ค.
์ด ๊ฐ์ฒด์๋ data
, methods
, computed
, watch
๋ฑ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ปดํฌ๋ํธ์ ์ด๋ฆ์ ํ ๋นํ๋ ๊ฒ์ผ๋ก ์์ํ๊ฒ ์ต๋๋ค.
๋๋ฒ๊น
์ ์ ์ฉํ๋ฉฐ Vue ๊ฐ๋ฐ์ ๋๊ตฌ์์ ์ปดํฌ๋ํธ์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ์ดํฐ ํจ์ ์์ message
๋ผ๋ ์์ฑ์ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ์ค์ ํ๊ณ , ํ
ํ๋ฆฟ์์ message
ํํ์์ผ๋ก ์ ์ ํ
์คํธ๋ฅผ ๋์ฒดํ ๊ฒ์
๋๋ค.
์ปค๋งจ๋ ๋ผ์ธ์์ npm run dev
๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ํ
์คํธํด๋ณด๊ณ , ๋ธ๋ผ์ฐ์ ์์ ์ฑ์ ๋ฏธ๋ฆฌ๋ณด๋ฉด ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ปดํฌ๋ํธ๊ฐ ์๋ํ๊ณ ์์์ ํ์ธ์์ผ ์ค๋๋ค.
์ง๊ธ๊น์ง ๋ฐฐ์ด ๋๋ถ๋ถ์ ๊ฒ๋ค์ ์ปดํฌ๋ํธ์๋ ์ฌ์ ํ ์ ์ฉ๋ฉ๋๋ค.
์ฃผ๋ ์ฐจ์ด์ ์ ๋ก์ง์ ๋ถ๋ฆฌ๊ฐ ๋ ์ ๋์ด ์๋ค๋ ๊ฒ์
๋๋ค.
ํ
ํ๋ฆฟ์ ๊ตฌ๋ฌธ ๊ฐ์กฐ๊ฐ ์ ์ฉ๋์ด ์์ ๋ ์ปดํฌ๋ํธ ์์
์ด ํจ์ฌ ์ฝ์ต๋๋ค.
Vue ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ด๋ฉด, name ์์ฑ์ ์ง์ ํ ์ด๋ฆ์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ด๊ฒ์ ๋๋ฒ๊น
์ ์ ์ฉํฉ๋๋ค.
๊ฐ๋ฐ์ ๋๊ตฌ๋ ๋๋๋ก ์ผ๋ถ ์ปดํฌ๋ํธ๋ฅผ '์ต๋ช
'์ผ๋ก ํ์ํ์ง๋ง, ์ปดํฌ๋ํธ์ ์ด๋ฆ์ ํ ๋นํ๋ฉด ์ด๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์ด๋ฆ์ ์๋ฌธ์๋ก ์ ์งํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด ๊ฐ๋ฐ์ ๋๊ตฌ๊ฐ ๋๋ฌธ์๋ก ๋ณํํด์ค๋๋ค.
์ด๊ฒ์ด ๋จ์ผ ํ์ผ ์ปดํฌ๋ํธ๋ก ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์
๋๋ค.
๋ค์ ๊ฐ์์์๋ ์ปดํฌ๋ํธ ํ์ผ๋ก ๋ ๋ง์ ๊ฒ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ณ์ ํ์ํ ์์ ์
๋๋ค.
<script>
export default {
data() {
return {
msg: 'Hello World'
}
}
}
</script>
<template>
<p>{{ msg }}</p>
</template>
<script>
export default {
name: 'App',
data() {
return {
msg: 'Hello World'
}
}
}
</script>
<template>
<p>{{ msg }}</p>
</template>