이르면 9월부터 vue.js를 사용하여 개발하게 되었다..
조금 갑작스럽지만, 원래 인생은 갑작스러운 법이니까, 차근차근 vue를 배워보도록 하자.
1) Data-Binding
Vue 인스턴스 생성시에 옵션으로 들어가는 필드들
- el: 뷰 인스턴스가 바인딩할 Dom노드
- data: 뷰인스턴스가 관리할 모델 데이터. 뷰에서 {{}} 라는 표현을 사용하면 모델 데이터와 연동된다.
javascript DOM API or JQuery처럼 View를 직접 조작하는것이 아니라 View와 바인딩 된 모델 데이터를 수정하면 뷰는 자동으로 렌더링이 일어난다.
콘솔창을 열어서 app.product = "Vue Rendering Test!!"를 입력하니까 자동으로 렌더링이 되어서 화면에 Vue Rendering Test가 표시되는것을 볼 수 있었다.
그동안은(그러니까 JQuery와 JS를 이용했을땐) DOM에 직접 접근하여 text노드를 조작해왔었다.
document.getElementById("app").innerText = "vue.js를 공부해요!!!";
하지만 vue는 View와 바인딩된 모델데이터의 값을 변경하면, 자동으로 렌더링 해준다는 의미다.
app.product = "vue.js를 공부해요!!!";
+ 곁다리
리액트는 VirtualDOM이라는 DOM과 연결되는 가상 모델을 정의하고, 이 모델 데이터를 변경하면 뷰가 바뀐다
뷰는 뷰 인스턴스 내부에 data라는 속성이 모델 데이터에 해당하고, 이 모델데이터를 변경하면 그 즉시 자동으로 렌더링되어 화면이 갱신된다.
2) Attribute Binding
"html의 속성에 vue 인스턴스의 data속성을 어떻게 연결해야하는가 --> 바인딩 문법"
DOM에서 Node는 3가지 값을 가진다.
<p id="title">Hi</P>
- 엘리먼트 : p
- 속성 : id
- 자식노드 : Hi
예를들자면, id Attribute를 Vue의 data와 묶어주는것이 바인딩이다.
html attribute에 데이터 모델을 바인딩하는 방법은 <태그명 v-bind:속성명 ="data속성명">이다. 생략해서
<태그명 :속성명 = "data속성명"> 으로 사용해도 동일하다.
attribute중에 class와 style은 많이 사용되므로 class binding / style binding문법이 별도로 있다.
3) conditional rending
특정한 조건에 따라서 뷰를 다르게 보여주는것을 conditional 렌더링이라고 한다.
js에서는 조건연산자를 사용하여 이를 표현할 수 있다.
예를들어..
if( 일반회원인가요 ){
"일반회원 html 동적으로 넣기"
}else{
"SNS회원화면을 위해 html 동적으로 넣기"
}
vue에서는 conditional renderind를 가능하게 해주는 다양한 템플릿 문법들이 제공된다.
- template syntax 문법 : v-if and v-else
Attribute에 v-if는 js의 if문과 비슷하다. value로 받는 값이 참이면 if부분의 태그를 렌더링하고, 거짓이라면 v-else부분을 렌더링한다.
- v-else-if
if와 else가 있다면 v-else-if v-else도 있다. 당연하게도. 글자와 동일하게 조건을 세가지 이상으로 나눌 수 있다.
4) list rendering
json 배열을 반복문을 사용하여 vue에 보여주고자 하는것이 목적이다. 리액트는 js문법을 가지고 구현하지만, vue에는 반복문을 지원해주는 "템플릿 문법"이 있다.
- 스트링타입 배열 렌더링
data에 details라는 string배열이 있다. index는 배열의 인덱스가 필요한 경우 사용한다.
<태그명 v-for="item in collection"> {{ item }}</li>
<li v-for="flower in flowers"> {{ flower }} </li>
4) 객체 타입 배열 렌더링
객체배열을 사용해서 접근 할 수도 있다.
:key속성을 이용해서 vue가 유니크한 dom에 접근하도록 해야하는것이 권장사항이라고는 하나 사실 무슨말인지 잘 와닿지가 않는다... 처음엔 DOM에 id attribute가 추가되는줄 알았는데 그게 아니였다. 아마 vue에서 내부적으로 사용하는 id인가보다.
'Today I learned' 카테고리의 다른 글
[vue.js] 본격 생존코딩! 밥벌이를 해보자! (3) (0) | 2020.06.30 |
---|---|
[vue.js] 본격 생존코딩! 밥벌이를 해보자! (2) (0) | 2020.06.30 |
[OAuth2] 권한 부여 종류 (0) | 2020.06.19 |
[OAuth2] 기본개념 복습(용어정리) (0) | 2020.06.19 |
여러가지 연습 코드 (0) | 2020.06.17 |
댓글