💡 Vue.js 기본 정리! 💡
ViewModel : 데이터 또는 화면이 바뀌는지 확인
const vm = new Vue({
// 옵션
});
el
: "css 선택자" or HTML Element, Vue가 적용될 요소 지정new Vue({
el : "#app"
});
<div id="app">
</div>
data
: 객체 or 함수, Vue에서 사용되는 정보를 저장{{ key값 }}
: mount 시, value값으로 변경new Vue({
el : "#app",
data : {
msg : 'Hello'
}
});
new Vue({
el : "#app",
data() {
return {
msg : 'Hello'
}
}
});
<div id="app">
<h2> {{msg}} </h2>
</div>
{{ }}
v-once
new Vue({
data : {
msg : 'Hello'
}
});
<div>{{msg}}</div>
<div v-text="msg">무시</div>
<div v-html="msg">무시</div>
// Dom 이 기존에 갖고 있던 '무시' 라는 데이터가 무시됨
<div id="app">
<div>메세지 : {{msg}}</div>
<!-- {{}} 은 속성의 값으로 사용 불가능함 -->
<div v-text="'메세지 : ' + msg">무시된다.</div>
<div v-html="'메세지 : ' + 'msg'">무시된다.</div>
<div v-html="'메세지 : ' + msg">무시된다.</div>
</div>
<script>
const vm = new Vue({
el: "#app",
data: {
msg: "<h2>Hello Vue~</h2>"
}
});
</script>
실행 화면
{{ 표현식 }}
내에서 JavaScript 표현식의 사용이 가능vue가 갖는 directive
v-once : 데이터에 대한 것을 딱 한번만 수행하고 반영하지 않음
v-text : 데이터 속성의 html을 escape 처리
v-html : 데이터 속성의 html을 파싱하여 처리
양방향 바인딩 처리를 위한 사용
폼의 input, textarea
input인 경우, value 속성에 영향 -> 각 상황에 따라 영향을 주는 속성이 달라짐
<input type="text" v-model="msg">
// msg : 단순한 문자열이 아닌 Vue 인스턴스
<div id="app">
<input type="text" v-model="msg"> // 양방향 : model의 값을 가져온 뒤, 사용자의 조작을 통해 값이 변경이 되면 뷰의 instance에 직접 접근하여 변경 -> F12를 통해 확인가능
<div>{{msg}}</div> // 단방향 : msg의 값을 표시, 직접 바꿀 수 없다.
<div v-once>{{msg}}</div>
</div>
<script>
const vm = new Vue({
el: "#app",
data: {
msg: 'hello'
}
});
</script>
Element 속성 바인딩 처리를 위한 사용
:
로 사용 가능
속성의 값이 문자열인 경우 v-bind를 생략할 수 있다.
속성의 값이 Vue 인스턴스 인 경우 v-bind 작성
[ ] 는 Vue의 인스턴스로 간주
<div id="app">
<!-- 속성을 바인딩 합니다. -->
<div v-bind:id="idValue">v-bind 지정 연습</div> // id 값이 test-id
<div v-bind:[key]="btnId">버튼</button>
<!-- 약어 -->
<div :id="idValue">v-bind 지정 연습</div>
<div :[key]="btnId">버튼</button>
</div>
<script>
const vm = new Vue({
el: "#app",
data: {
idValue: 'test-id',
key: 'id',
btnId: "btn1"
}
});
</script>
<button v-show='isExist'>검색</button>
<script>
const vm = new Vue({
el: "#app",
data: {
isExist: 'true'
}
});
</script>
배열이나 객체의 반복에 사용
v-for = "요소 변수 이름 in 배열"
v-for = "(요소 변수 이름, 인덱스) in 배열"
{{ }}
) 바인딩을 숨기는데 사용<style>
[v-cloak] {display:none};
</style>
<div v-cloak>
{{msg}}
</div>
<template v-for="(region, index) in ssafy ">
<h2>지역 : {{ region.name}}</h2>
<h3>{{ region.count}}개반</h3>
</template>
중복 선언 불가능
선언된 블럭에서만 사용할 수 있는 블록 변수
호이스팅 대상에서 제외 -> 선언되기 전에 호출 불가
// var
var msg = "1"
if (msg == "1"){
var msg = "2";
console.log(msg); // 2 -> 호이스팅
}
console.log(msg); // 2
// let
var msg = "1"
if (msg == "1"){
let msg = "2";
console.log(msg); // 2 -> 호이스팅 불가
}
console.log(msg); // 1
:
를 생략하여 함수를 표현할 수 있다.for in : Key 값
for of : value 값
const name = "홍길동"
const age = 22;
console.log(name+"의 나이는 " + age +"세 입니다.")
console.log(`${name}+"의 나이는 " + ${age} +"세 입니다."`)
`${}`