728x90
목차
- MVVM Pattern
- Instance
- el
- data
1. MVVM Pattern
- 소프트웨어 아키텍처 패턴의 일종
- 마크업 언어로 구현하는 그래픽 사용자 인터페이스(view)의 개발을 Back-end(model)로부터 분리시켜 view가 어느 특정한 모델 플랫폼에 종속되지 않도록 함
- View = 우리 눈에 보이는 부분 = DOM
- Model = 실제 데이터 = JSON
- View Model (Vue)
- View를 위한 Model
- View와 연결(binding)되어 Action을 주고 받음
- Model이 변경되면 View Modle도 변경되고 바인딩된 View도 변경됨
- View에서 사용자가 데이터를 변경하면 View Model의 데이터가 변경되고 바인딩된 다른 View도 변경됨
정리
- View는 Model을 몰라요, Model도 View를 몰라요 (독립성 증가, 적은 의존성)
- DOM은 Data를 몰라요, Data도 DOM을 몰라요
2. Vue instance
- Vue CDN 가져오기
- new 연산자를 사용한 생성자 함수 호출
- vue instance 생성
- 인스턴스 출력 및 확인
- Vue instance === 1개의 객체
- 아주 많은 속성과 메서드를 이미 가지고 있고, 이러한 기능들을 사용하는 것
※ 참고 - 생성자 함수
- JS에서 객체를 하나 생성한다고 한다면?
- 하나의 객체를 선언하여 생성
- 동일한 형태의 객체를 또 만든다면?
- 또 다른 객체를 선언하여 생성
- 동일한 구조의 객체를 여러 개 만들고 싶다면?
- 생성자 함수는 특별한 함수를 의미하는 것이 아님
- new 연산자로 사용하는 함수
- 함수 이름은 반드시 대문자로 시작
- 생성자 함수를 사용할 때는 반드시 new 연산자를 사용
3. el (element)
- Vue instance와 DOM을 mount(연결)하는 옵션
- View와 Model을 연결하는 역할
- HTML id 혹은 class와 마운트 가능
- Vue instance와 연결되지 않은 DOM 외부는 Vue의 영향을 받지 않음
- Vue 속성 및 메서드 사용 불가
작성 및 확인
- 새로운 Vue instance 생성
- 생성자 함수 첫번째 인자로 Object 작성
- el 옵션에 #app 작성 = DOM 연결
- 인스턴스 출력
- Vue와 연결되지 않은 div 생성
- 두 div 모두에 {{ message }} 작성
- 결과 확인
- message 속성이 정의 되지 않았다는 경고와 {{ message }} 가 그대로 출력되는 차이
4. data
- Vue instance의 데이터 객체 혹은 인스턴스 속성
- 데이터 객체는 반드시 기본 객체 { }(Object) 여야 함
- 객체 내부의 아이템들은 value로 모든 타입의 객체를 가질 수 있음
- 정의된 속성은 interpolation {{ }} 을 통해 view에 렌더링 가능함
- Vue instance에 data 객체 추가
- data 객체에 message 값 추가
- 결과 확인
- 추가된 객체의 각 값들은 this.message 형태로 접근 가능
methods
- Vue instance의 method들을 정의하는 곳
- methods 객체 정의
- 객체 내 print method 정의
- print method 실행 시 Vue instance의 data 내 message 출력
- 콘솔창에서 app.print() 실행
- method를 호출하여 data 변경 가능
- 객체 내 bye method 정의
- print method 실행 시 Vue instance의 data 내 message 변경
- 콘솔창에서 app.bye() 실행
- DOM에 바로 변경된 결과 반영
- Vue의 강력한 반응성(reactivity)
※ 주의 - methods with Arrow Function
- 메서드를 정의 할 때, Arrow Function을 사용하면 안 됨
- Arrow Function의 this는 함수가 선언될 때 상위 스코프를 가리킴
- 즉 this가 상위 객체 window를 가리킴
- 호출은 문제 없이 가능하나 this로 Vue의 data를 변경하지 못함
728x90
'Front-end > Vue2' 카테고리의 다른 글
[Vue] CLI (0) | 2022.11.03 |
---|---|
[Vue] Style Guide (0) | 2022.11.03 |
[Vue] Directives (0) | 2022.11.03 |
[Vue] Basic of Syntax (0) | 2022.10.31 |
[Vue] Vue? (0) | 2022.10.31 |