vue๋ฅผ ์ฌ์ฉํ๋ ๊ณณ์ด ์ ์ ๋ง์์ ธ์, ๋ฆฌ์กํธ๋ฟ๋ง ์๋๋ผ vue๋ ๊ธฐ๋ณธ์ ์์์ผํ์ง ์๋ ์ถ์ด์ ์์ํ๊ฒ ๋์๋ค.
vue ์ ์ฅ์
1. vue๋ ์น ์ฑ ๊ฐ๋ฐํด React, Angular ์ค์์ ๊ฐ์ฅ ์ฝ๋ค. ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ ์ด์ฉํด ํ ๋์ ์์๋ณด๊ธฐ ์ฉ์ดํ๋ค.
2. ๊ฐ๋ฐํ๋ ๋ฐฉ์๋ ๋ค์ํ์ง ์์ ํ์ ์์ ์คํ์ผ ํต์ผ์ด ์ฉ์ดํ๋ค. ๋ฆฌ์กํธ๋ ์ฝ๋๋ฅผ ์ง๋ ๋ฐฉ์์ด ๋งค์ฐ ๋ค์ํ๋ฐ vue๋ ๋ฑ ํ ๊ฐ์ง ๋ฐฉ๋ฒ๋ง ๊ฐ์ง๊ณ ์๋ค.
3. HTML ๋ ๋๋งํ๋ ์๊ฐ์ด ๋น ๋ฅด๋ค.
4. ๊พธ์คํ ์ ๋ฐ์ดํธ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ค์น ๋ฐ ์คํ
npm install -g @vue/cli
vue create ์์ฑํ ํ๋ก์ ํธ ์ด๋ฆ
npm run serve
๊ธฐ๋ณธ ๊ตฌ์กฐ
App.vue
<template>
ํ๋ฉด์ ๋ ๋๋ง ํ๋ template ๋ถ๋ถ
</template>
<script>
import HelloWorld from "./components/HelloWorld.vue";
export default {
name: "App",
components: {
HelloWorld,
},
};
๋ฐ์ดํฐ, ํจ์ ๋ฑ์ ์ ์ฅํ๋ ๋ถ๋ถ
</script>
<style>
#app {
css๋ฅผ ์ค์ ํ๋ ๋ถ๋ถ
}
</style>
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
<template>
<img alt="Vue logo" src="./assets/logo.png" />
<div>
<h4 class="room1" :style="ํ๋๊ธ์จ">{{ products[0] }} ์๋ฃธ</h4>
<p>์ {{ price1 }}๋ง์</p>
</div>
<div>
<h4>{{ products[1] }} ์๋ฃธ</h4>
<p>์ {{ price2 }}๋ง์</p>
</div>
<div>
<h4>{{ products[2] }} ์๋ฃธ</h4>
<p>์ {{ price3 }}๋ง์</p>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
price1: 60,
price2: 70,
price3: 80,
ํ๋๊ธ์จ: "color: blue",
products: ["์ญ์ผ๋์๋ฃธ", "์ฒํธ๋์๋ฃธ", "๋งํฌ๊ตฌ์๋ฃธ"],
};
},
components: {},
};
</script>
๋ฐ์ดํฐ๋ script ์ data() ์์ ๋ณด๊ดํ๊ณ , data(){ return { } }
template์์ {{ }} ์ด ์์ ๋ฃ์ด์ ๊บผ๋ด์ ์ฐ๋ฉด ๋๋ค.
* HTML ์์ฑ๋ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ์ด ๊ฐ๋ฅํ๋ค.
<div :id="์์ด๋" :class="ํด๋์ค๋ช
" :style="์ํ๋ ์คํ์ผ"></div>
์์ฑ ๊ฐ ์์ :์ ๋ถ์ฌ์ฃผ๋ฉด ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ์ ํ ์๊ฐ ์๋ค.
์๋ฅผ ๋ค์ด,
<template>
<div>
<h4 :id="idnn" :class="classnn" :style="ํ๋๊ธ์จ">
{{ products[0] }} ์๋ฃธ
</h4>
....
</template>
<script>
export default {
name: "App",
data() {
return {
...
ํ๋๊ธ์จ: "color: blue",
idnn: "๋๋",
classnn: "๋จ๋จ",
};
...
์ด๋ฐ์์ผ๋ก ์์ฑ ํ ํ์ธํด๋ณด๋ฉด,
์ ์ฌ์ฉ๋๊ณ ์์์ด ํ์ธ๋๋ค.
๋ฐ๋ณต๋ฌธ v-for
<div class="menu">
<a>Home</a>
<a>Products</a>
<a>My page</a>
</div>
๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ฐ๊ฟ๋ณด์
<div class="menu">
<a v-for="์ง๊ณ ์ถ์ ์ด๋ฆ in ๋ช ๋ฒ ๋ฐ๋ณตํ ์ง">Home</a>
</div>
key๊ฐ ์์ฑํ๋ผ๊ณ ์น์ ํ๊ฒ ์๋ ค์ฃผ๊ธฐ ๊น์ง ํจ.
๊ทธ๋ผ :key="๋ฐฉ๊ธ ์ง์ ์ด๋ฆ" ์ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋น
์ํผ ์ด๋ ๊ฒ ํ๋ฉด ๊ทผ๋ฐ Home์ด๋ผ๋ ๊ฒ๋ง 3๊ฐ๊ฐ ์๊ธด๋ค.
์ด๋๋ "๋ช ๋ฒ ๋ฐ๋ณตํ ์ง" ๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
<script>
export default {
name: "App",
data() {
return {
header_menu: ["Home", "Product", "My page"],
};
},
components: {},
};
</script>
script data() ๋ถ๋ถ์ header_menu ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ฃผ๊ณ ,
<a v-for="aa in header_menu" :key="aa">{{ aa }}</a>
template ๋ถ๋ถ์ ์์ฒ๋ผ ์์ฑํด์ฃผ๊ฒ ๋๋ฉด ,
์ถ๋ ฅ์ด ์์ฑ๋๋ค.
์ ๋ฆฌ
1. aํ๊ทธ์ v-for๋ฅผ ์ด์ฉํ์ผ๋ aํ๊ทธ๊ฐ header_menu์ ๊ฐ์๋งํผ ๋ฐ๋ณต์ด ๋ ๊ฒ.
2. ์๋ช ํ ๋ณ์๋ (aa) ๋ฐ์ดํฐ์์ ์๋ฃ๊ฐ ๋์ด ๋ฐ๋ณต์ ๋ ๋๋ง๋ค ํด๋น ๊ฐ์ ๊ฐ์ง๋ค.
3.key๋ ๋ฐ๋ณต๋ฌธ ๋๋ฆฐ ์์๋ฅผ ์ปดํจํฐ๊ฐ ๊ตฌ๋ถํ๊ธฐ ์ํด ๊ผญ ์ฌ์ฉ
-> in ์ผ์ชฝ์ ๋ณ์๋ฅผ 2๊ฐ ์ง์ ํ์ฌ ๋๋ฒ์งธ ๋ณ์๋ ํ๋์ฉ ์ฆ๊ฐํ๋ idx๋ก ์ง์ ํด์ค ์ ์์.
<a v-for="(a,i) in header_menu" :key="i">{{ i }}</a>
<div>
<h4>{{ products[0] }} ์๋ฃธ</h4>
<p>์ {{ price1 }}๋ง์</p>
</div>
<div>
<h4>{{ products[1] }} ์๋ฃธ</h4>
<p>์ {{ price2 }}๋ง์</p>
</div>
<div>
<h4>{{ products[2] }} ์๋ฃธ</h4>
<p>์ {{ price3 }}๋ง์</p>
</div>
๊ธฐ์กด์ ๋ง๋ค์๋ ์ฝ๋๋ฅผ ๋ณํ์์ผฐ๋ค
<div v-for="(a, i) in products" :key="i">
<h4>{{ products[i] }}</h4>
<p>์ {{ price1 }}๋ง์</p>
</div>
์ผ๋จ ๊ฐ๊ฒฉ์ ์ ๊ฒฝ์ฐ์ง ๋ง๊ณ ์๋จ์ ์ง์ญ๋ง ๋ฐ๊พธ๋ผ๊ณ ํด์ ๋ฐ๊ฟจ๋๋ฐ,
๋ฐฉ๋ฒ์ด ์์ง ์์๊น ํด์ ํ๋ฒ ๊ฐ์ฒด์ ๋ด์์ ํด๋ณด์๋ค.
<template>
<div v-for="(a, i) in list" :key="i">
<h4>{{ a.place }} ์๋ฃธ</h4>
<p>์ {{ a.price }}๋ง์</p>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
list: [
{ place: "์ญ์ผ๋", price: "60" },
{ place: "์ฒํธ๋", price: "70" },
{ place: "๋งํฌ๊ตฌ", price: "80" },
],
};
},
components: {},
};
</script>
list ์ ๋ฐ๋ณต์ ๋๋ฉด์ ๊ฐ๊ฐ์ ๊ฐ๋ค์ ๊ฐ์ ธ์ฌ ์ ์์๋ค.
'TIL > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vue.js] ๊ธฐ์ด 2 (์ด๋ฒคํธํธ๋ค๋ฌ, ํจ์, v-if/v-else) (1) | 2023.12.21 |
---|