[Vue] Vue.js 기본 원리


1. Vue.js ?  

   자바 스크립트 프레임 워크이며 데이터와 뷰를 연결해 주는 역할을 한다. 

 MVVM(Model-View-ViewModel)이라는 방식을 기본으로 Vue 가 만들어져 있다.

 

 

2. 기본 MVVM 구조  

 

 

"Model(Vue 안에 준비된 데이터)" 

데이터는 무엇인가? 

+

"View(HTML 에서 표시되는 요소)"

표시되는 요소는 무엇인가? 

+

"ViewModel(View 와 Model을 어떻게 연결할까)"

어떤 식으로 연결되는가? 

 

 

 

 

3. Vue.js 의 관점에서 더 자세히 보는 MVVM 구조 

MVVM 구조를 Vue의 관점에서 생각해 보았을 때는 아래처럼 확인 할 수있다. 

 

 

img.pngvue의 MVVM 구조

 

1. 데이터는 무엇인가 (Model

필요한 데이터를 생각하고 넣어 둘것 (웹 페이지'html' 에서 바뀌는 부분(데이터가 들어가는 속성) 에 매핑된다.)

2. 표시되는 요소는 무엇인가(View

그 데이터가 HTML의 어느 부분에 어떤 형식(표현방식)으로 표시되는가 생각할 것 

3. 어떤 식으로 연결 되는가(ViewModel

HTML의  부분이 조작(변경)될 때 데이터가 어떤 형식으로 변화되고  생각할 것 , (Model 과 View 의 연관 방식)

 

img.png

 

 다음 그림에서 보이는 것은  Model(데이터를 다루고 있는 Vue.js 부분)과  View(ViewHTML 로 정의된 요소), 그리고

"그 데이터와 뷰를 어떤 식으로 연결시키고 있을까?"라는 이미지로 생각해 볼 수 있다. 

 

데이터의 종류는 숫자, 문자, 불리언, 배열, 객체 등 자바스크립트에서 사용할 수 있는 데이터라면 모두 사용 가능하다. 

순서는 데이터를 만들고, 표시하는 요소를 준비한 후, 연결한다. 

 



4. Vue.js 의 주요 기능 

 

Vue.js 는 기능이 간단하며 많지 않다. 주요 기능은 아래와 같다. 

기능 서식
데이터를 있는 그대로 표시{{데이터}}
요소의 속성을 데이터로 지정v-bind
입력폼과 데이터의 연결v-model
이벤트 연결v-on
조건에 따라 표시v-if
반복해서 표시v-for
데이터를 사용한 계산 computed
 watch
표시/비표시에 애니메이션 처리transition
컴포넌트 조립component

 

 

5. 기본 원리를 설명하는 예제 

 

img.png

 

1. Vue.js 라이브러리를 CDN 으로 설치 

 

2. Vue 와 연결되는 HTML 요소를 작성한다. HTML 은 표시되고 싶은 곳에 "{{프로퍼티명}}" 혹은 "v-text="프로퍼티명"" 으로 지정한다. 

 

3. script요소에서 Vue 인스턴스를 작성한다. 

 

 

6. 기타 Vue 용어 정리

 

6.1 머스태시(Mustache) 

  • 콧수염이라는 의미로 데이터를 있는 그대로 표시할때 사용한다. {{데이터}}
  • JavaScript를 사용하여 작성 할 수 있다.
<div id="app">
	<p> {{ myPrice * 1.08}} </p> // 출력 -> 540 
    <p> {{ "안녕하세요" + myPrice + 님}} </p> // 안녕하세요 홍길동님 
    <p> {{ myName.substr(0,1) }} </p> // 홍
</div>

6.2 데이터 바인딩 

  •  Vue 인스턴스의 데이터가 웹 페이지상의 표시와 결합 하는 것

6.3 디렉티브

  •  요소에 대해서 Vue 가 어떤일을 하는지를 지정하는 명령어로 "v-" 가 붙어 이다. 
0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

웹개발

번호 제목 글쓴이 날짜 조회수
22 [리눅스] Apache Document Root 권한설정 최고관리자 09-04 1,626
21 [리눅스] CentOS Version 확인하기 최고관리자 09-04 1,462
20 [리눅스] MySQL 최초 접속 및 설정 최고관리자 09-03 1,754
19 [리눅스] MySQL 5.7 보안설정 최고관리자 09-03 1,551
18 [리눅스] RDate로 시간 동기화 하기. 최고관리자 09-03 1,476
17 [리눅스] 기본설치 (Apache , PHP , MySql) 최고관리자 09-03 2,032
16 [공부] 프로그래밍 공부 사이트 최고관리자 09-01 1,407
15 [기능] Mobile 메뉴 최고관리자 09-01 1,374
14 [기능] Mega Menu 최고관리자 09-01 1,422
13 [기능] 상단에서 메뉴높이가 높고 아래로 스크롤하면 메뉴높이가 줄어듦 최고관리자 09-01 1,426
12 [기능] 상단에 메뉴가 보이다가 아래로 스크롤하면 메뉴가 사라지고 상단으로 가면 메뉴가 보임. 최고관리자 09-01 1,345
11 [기능] 메뉴가 안 보이다가 아래로 스크롤하면 메뉴가 생김 최고관리자 09-01 1,447
10 [기능] Icon으로 구성된 수직/수평 메뉴 최고관리자 09-01 1,292
9 [JS] 자바스크립트 {...} [...] 문법 (비구조화 할당/구조분해 할당) 최고관리자 09-01 1,301
8 [기능] 상단의 높이가 큰 메뉴상태에서 아래로 스크롤하면 상단에 높이가 낮은 메뉴가 고정됨 최고관리자 09-01 1,304
7 [Font] Naversoftware 폰트 리스트 최고관리자 09-01 1,368
6 [Web Font] 직접입력해서 폰트를 확인할 수 있는 사이트 최고관리자 09-01 1,358
5 [CSS - font] unicode-range 최고관리자 08-31 1,585
4 [UI 참고] Oven - 회원가입 최고관리자 08-31 1,321
3 타자기체 - 가로 세로 비율이 고정되어 있는 글꼴로 표현 최고관리자 08-08 1,410