Vue는 React와는 다르게 HTML(<template>
), Script(<script>
), Style(<style>
)을 작성하는 곳이 각각 분리되어 있다.
<template>
<img alt="Vue logo" src="./assets/logo.png" />
<div>
<h4>{{ products[0] }}</h4>
<p>{{ price1 }} 만원</p>
</div>
<div>
<h4>{{ products[1] }}</h4>
<p>{{ price2 }} 만원</p>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
price1: 60,
price2: 70,
products: ["역삼동원룸", "천호동원룸", "마포구원룸"],
};
},
components: {},
};
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
Vue의 특징으로 HTML에 Javascript 데이터를 바인딩하는 방법이 특이하다.
Vue는 데이터를 저장하는 상자가 있는데, 그곳에 데이터를 저장해서 사용하는 방식이다.
export default {
name: "App",
// 데이터 보관함 -시작!
data() {
return {
price1: 60,
price2: 70,
products: ["역삼동원룸", "천호동원룸", "마포구원룸"],
};
},
// 데이터 보관함 -끝!
components: {},
};
return 중괄호 안에다가 모든 데이터들을 담아서 사용하는 형식이다. 한마디로 변수같은 것들을 이곳에서 선언하는 것이다.
데이터 보관함에 저장한 데이터를 HTML에 바인딩 하는 방법은 Vue는 특이하게도 콧수염("{{ }}")이라는 것을 사용한다.
<div>
<h4>{{ products[0] }}</h4>
<p>{{ price1 }} 만원</p>
</div>
{{데이터바인딩}}을 하는 이유는 Vue의 실시간 자동 렌더링을 사용하기 위해서 사용한다고 하는데, 내 예상이지만 React의 state같은 것이 아닐까 싶다.