๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/Vue.js

[Vue.js] Vue ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ

by Connecting-the-dots 2022. 3. 31.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ์‹ค์Šต ํฌ์ธํŠธ!

๐Ÿ’œ Vue ์˜ ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉ ๋ฌธ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

document.getElementById('ํƒœ๊ทธ_ํ˜น์€_ํด๋ž˜์Šค_ํ˜น์€_์•„์ด๋””').innerHTML = ๋ฐ์ดํ„ฐ;
  • JavaScript ์—์„œ ๋ณ€์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ HTML ์— ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์™€ ๊ฐ™์ด ๊ธธ๊ฒŒ ํ•œ์ค„์„ ์จ์•ผ ๊ฐ€๋Šฅํ–ˆ๋‹ค.
  • ๋ฐ˜๋ฉด Vue ์—์„œ ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.
    • ํŒŒ์ผ ๋‚ด ํŠน์ • ์œ„์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•œ๋‹ค.
    • ๋ณด๊ด€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ {{ ๋ฐ์ดํ„ฐ }} ์™€ ๊ฐ™์€ ๋ฌธ๋ฒ•์œผ๋กœ HTML ์ค‘๊ฐ„์— ๋‚ด์šฉ์œผ๋กœ ๋„ฃ์–ด์ค€๋‹ค.

๐Ÿค HTML ์ž‘์„ฑํ•˜๊ธฐ

<template>
  <div>
    <h4>OO ์›๋ฃธ</h4>
    <p>OO๋งŒ์›</p>
  </div>
  <div>
    <h4>OO ์›๋ฃธ</h4>
    <p>OO๋งŒ์›</p>
  </div>
  <div>
    <h4>OO ์›๋ฃธ</h4>
    <p>OO๋งŒ์›</p>
  </div>
</template>
  • ๋ชจ๋“  HTML ์ฝ”๋“œ๋Š” ์œ„์™€ ๊ฐ™์ด <template></template> ์— ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
  • ์ด์™ธ์— JavaScript ๊ธฐ๋Šฅ์€ <script></script> ์— ์ž‘์„ฑํ•˜๊ณ , style ์€ <style></style> ์— ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿค ๋ฐ์ดํ„ฐ ๋ณด๊ด€ํ•˜๊ธฐ

<script>
export default {
	name: "App",
	data(){
		return {
			price1 : 55,
			price2 : 43,
			price3 : 38,
		}
	},
	components: {},
};
</script>
  • ๋ฐ์ดํ„ฐ๋Š” <script></script> ์‚ฌ์ด์— data(){ return { } } ์„ ์ถ”๊ฐ€ํ•œ ํ›„ object ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค.
  • ์ด๋ฅผ Vue ์˜ data ๋ณด๊ด€ํ•จ, ๋ณ€์ˆ˜ ๋ณด๊ด€ํ•จ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋˜๋ฉฐ, ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” object ํ˜•์‹์— ๋งž์ถฐ์„œ ๋ชจ๋‘ ์—ฌ๊ธฐ์— ๋ณด๊ด€ํ•œ๋‹ค.

๐Ÿค ๋ณด๊ด€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ HTML ์— ์‚ฝ์ž…ํ•˜๊ธฐ

<p>{{ price1 }}๋งŒ์›</p>
  • ์œ„์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ๋ณด๊ด€ํ•œ ๋ฐ์ดํ„ฐ๋Š” HTML ์— ๋‚ด์šฉ์œผ๋กœ ์‚ฝ์ž…ํ•  ๋•Œ ์ค‘๊ด„ํ˜ธ ๋‘ ๊ฐœ ์•ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฐ์ดํ„ฐ์— ์ €์žฅ๋œ ๊ฐ’์ด ์ž…๋ ฅ๋œ๋‹ค.
  • ์ €์žฅํ•˜๊ณ  ๋‚˜๋ฉด ์ด์ œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ™•์ธํ•˜๋ฉด 55๋งŒ์›์ด๋ผ๊ณ  ์ž˜ ๋œจ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉ์„ ํ•˜๋Š” ์ด์œ  ์•Œ์•„๋ณด๊ธฐ

  • ์ž์ฃผ ๋ณ€๋™๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ํ•˜๋“œ์ฝ”๋”ฉ์„ ํ•ด๋†“๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•ด๋†“๋Š” ๊ฒƒ์ด ๋‚˜์ค‘์— JavaScript ๋กœ ์กฐ์ž‘ํ•˜์—ฌ ์ˆ˜์ •ํ•˜๊ธฐ ํ›จ์”ฌ ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • Vue ์—๋Š” data ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด data ์™€ ๊ด€๋ จ๋œ HTML ์— ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜์ด ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ๋ Œ๋”๋ง ๊ธฐ๋Šฅ์ด ์žˆ๋Š”๋ฐ, ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉ์„ ํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ’œ HTML ์†์„ฑ ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ

  • Vue ๋Š” ํŠน์ดํ•˜๊ฒŒ๋„ html ์†์„ฑ๋„ ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ฆ‰, style="", id="", class="" ์ด๋Ÿฐ ๋ถ€๋ถ„์—๋„ data ๋ณด๊ด€ํ•จ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
<p style="color: red">55๋งŒ์›</p>
  • ์ผ๋ฐ˜์ ์œผ๋กœ html ํƒœ๊ทธ์— ์ธ๋ผ์ธ ๋ฐฉ์‹์œผ๋กœ ์Šคํƒ€์ผ์„ ์ž…ํžˆ๋Š” style="color: red" ์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
<script>
export default {
	name: "App",
	data(){
		return {
			blue : 'color : blue',
		}
	}
};
</script>
<h4 :style="blue">๋‘”์‚ฐ๋™ ์›๋ฃธ</h4>
  • ํ•˜์ง€๋งŒ data ๋ณด๊ด€ํ•จ์— blue : 'color : blue' ์™€ ๊ฐ™์ด key-value ์™€ ๊ฐ™์€ object ํ˜•์‹์œผ๋กœ ๋„ฃ์–ด์ค€ ํ›„, ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ํƒœ๊ทธ์— key ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด value ๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค.
  • ์ด ๋•Œ ์ฃผ์˜ํ•  ์ ์€ ํƒœ๊ทธ์˜ ์†์„ฑ๋ช…(์—ฌ๊ธฐ์„œ๋Š” style) ์•ž์— ์ฝœ๋ก ( : ) ์„ ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ด์ œ ์ €์žฅํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์œ„์™€ ๊ฐ™์ด HTML ๋‚ด์šฉ์— style ์ด ์ž…ํ˜€์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•