티스토리 뷰
Vue.js 특징
1. MVVM 패턴
Vue.js는 UI 화면 개발 방법 중 하나인 MVVM 패턴의 뷰 모델(ViewModel)에 해당하는 화면단 라이브러리이다.
- 모델(Model) - 뷰(View) - 뷰 모델(ViewModel)로 구조화하여 개발하는 방식
- 화면 앞단(프론트엔드)의 화면 동작과 관련된 로직과 화면 뒷단(백엔드)의 데이터베이스 데이터 처리 로직을 분리하여 더 깔끔하게 코드를 구성한다.
(화면의 요소들을 제어하는 코드와 데이터 제어 로직을 분리하여 코드를 더 직관적으로 이해할 수 있고, 추후 유지 보수가 편해진다.)
용어 | 설명 |
뷰(View) | 사용자에게 보이는 화면 |
돔(DOM) | HTML 문서에 들어가는 요소(태그, 클래스, 속성 등)의 정보를 담고 있는 데이터 트리 |
돔 리스너(DOM Listener) | 돔의 변경 내역에 대해 즉각적으로 반영하여 특정 로직을 수행하는 장치 |
모델(Model) | 데이터를 담는 용기. 보통은 서버에서 가져온 데이터를 자바스크립트 객체 형태로 저장 |
데이터 바인딩(Data Binding) | 뷰(View)에 표시되는 내용과 모델의 데이터를 동기화 |
뷰 모델(ViewModel) | 뷰와 모델의 중간 영역. 돔 리스너와 데이터 바인딩을 제공하는 영역 |
뷰 모델 (ViewModel)
- 모델과 뷰의 동기화 역할을 하는 객체
- Vue.js에서 모든 뷰 인스턴스(Vue instance)는 뷰모델(ViewModel)
- Vue 생성자 혹은 하위 클래스들에 의해 인스턴스화된다.
var vm = new Vue({ /* options */ })
var vm = new Vue({ /* options */ })
이렇게 초기 객체를 선언해줌으로써 뷰와 모델 사이에서 양방향 데이터 바인딩이 가능하게 해준다.
뷰 인스턴스(Instance)
뷰로 화면을 개발하기 위해 필수적으로 생성해야 하는 기본 단위
* 인스턴스
className c = new className();
: new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다.
<script>
new Vue({
el: '#app',
data: {
message: 'Hello Vue.js!'
}
});
</script>
1) new Vue()로 인스턴스 생성
2) 인스턴스 안에 el 속성으로 뷰 인스턴스가 그려질 지점 지정
3) data 속성에 message 값을 정의하여 화면의 {{message}}에 연결
※ 뷰 인스턴스 옵션
속성 | 설명 |
template | 화면에 표시할 HTML, CSS 등의 마크업 요소를 정의하는 속성. 뷰의 데이터 및 기타 속성들도 함께 화면에 그릴 수 있다. |
methods | 화면 로직 제어와 관계된 메서드를 정의하는 속성. 마우스 클릭 이벤트 처리와 같이 화면의 전반적인 이벤트와 화면 동작과 관련된 로직을 추가할 수 있다. |
created | 뷰 인스턴스가 생성되자마자 실행할 로직을 정의할 수 있는 속성. |
※ 인스턴스가 화면에 적용되는 과정
※ 인스턴스 라이프 사이클
2. 컴포넌트 기반 프레임워크
: 코드를 재사용하기 위함. 뷰의 경우 컴포넌트를 썼을 때 HTML 코드에서 화면의 구조를 객관적으로 파악할 수 있다.
따라서 프레임워크 자체에서 컴포넌트 방식을 추구하면 모두가 정해진 방식대로 컴포넌트를 활용하므로 빠르게 구현할 수 있을 뿐만 아니라 남이 작성한 코드를 볼 때도 수월해진다.
최신 프론트엔드 프레임워크인 리액트, 앵귤러 모두 컴포넌트 기반의 개발 방식을 추구하고 있다.
※ 컴포넌트 : 조합하여 화면을 구성할 수 있는 블록
(뷰에서는 웹 화면을 구성할 때 흔히 사용하는 네비게이션 바, 테이블, 리스트, 인풋 박스 등과 같은 화면 구성 요소들을 잘게 쪼개어 컴포넌트로 관리한다.)
전역 컴포넌트 = 여러 인스턴스에서 공통으로 사용 가능
Vue.component('my-component' {
template: '<div>전역 컴포넌트가 등록되었습니다.</div>'
});
지역 컴포넌트 = 특정 인스턴스에서만 유효한 범위를 갖음
인스턴스에 components 속성을 추가하고 등록할 컴포넌트 이름과 내용을 정의한다.
var cmp={
template: '<div>지역 컴포넌트가 등록되었습니다.</div>'
};
new Vue({
el: '#app'
components: {
'my-local-component': cmp
}
});
3. 가상 돔(Virtual DOM) 렌더링 방식
: 빠른 화면 렌더링(Rendering)을 위해 리액트의 가상 돔(Virtual DOM) 렌더링 방식을 적용하여 사용자 인터랙션이 많은 요즘의 웹 화면에 적합한 동작 구조를 갖추고 있다. 가상 돔을 활용하면 특정 돔 요소를 추가하거나 삭제하는 변경이 일어날 때 화면 전체를 다시 그리지 않고 프레임워크에서 정의한 방식에 따라 화면을 갱신한다. 따라서 브라우저 입장에서는 성능 부하가 줄어들어 일반 렌더링 방식보다 더 빠르게 화면을 그릴 수 있다.
REFERENCE
Do it! Vue.js 입문 - 장기효
'Web > Vue.js' 카테고리의 다른 글
웹팩(webpack), webpack-dev-server (0) | 2020.11.09 |
---|---|
렌더링, DOM 개념, 서버 사이드 렌더링(SSR) vs 클라이언트 사이드 렌더링(CSR), SPA (0) | 2020.11.06 |
- Total
- Today
- Yesterday
- 자동변수
- C언어초기화
- 백트래킹
- 스프링프레임워크
- for each
- Spring Framework 실행 순서
- 스프링 aop
- 동적메모리할당
- redirect
- RedirectAttributes
- 스프링컨테이너
- BFS
- 서블릿컨테이너
- 서버클라이언트
- 프로세스메모리구조
- 웹소켓
- 컴퓨터구조
- ArrayList배열
- 멤버변수 지역변수
- 스프링어노테이션
- 정적메모리할당
- C언어쓰레기값
- C언어빌드과정
- 메모리계층구조
- 연결리스트
- forward
- DFS
- 데이터영역구조
- 의존성주입
- 스프링설정파일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |