Vuejs Reactivity 이해하기

2022. 1. 18. 21:37·이전자료/웹개발

DOM(Document Object Model)이란?

DOM은 프로그래밍과 웹 문서 간의 어떠한 접점(interface)을 통해서 웹 문서를 자유롭게 조작하며 상호작용(interact)이 가능하다.

View > ViewModel > Model 흐름

사용자가 View에서 어떠한 이벤트(마우스 클릭, 키보드 입력 등)가 발생했을 때 DOM Listeners가 듣고 자바스크립트에 있는 데이터를 바꿔주거나 자바스크립트에서 특정 로직을 실행하게 된다. 또 자바스크립트 내용이 바뀌었을 때 directives를 통해서 화면에 반영하게 된다.

이 흐름이 코드상에서 어떻게 흘러가는지 확인해보자.

기존 웹 개발 방식

데이터 갱신을 한다고 했을 때 아래의 중복 코드 발생

div.innerHTML = str;

Reactivity 구현

객체 동작을 재정의 하는 함수 Onject.defineProperty(대상 객체, 객체의 속성, {정의할 내용})

a = 10; (a는 정의 10은 할당)

IIFE(즉시실행함수)를 통한 Reactivity 라이브러리화 하기

즉시 실행 함수 표현(IIFE, Immediately Invoked Function Expression)은 정의되자마자 즉시 실행되는 Javascript Function를 말한다.

이는 Self-Executing Anonymous Function으로 알려진 디자인 패턴이고 크게 두 부분으로 구성된다. 

  • 첫 번째는 괄호((), Grouping Operator)로 둘러싸인 익명 함수(Anonymous Function)이다. 이는 전역 스코프에 불필요한 변수를 추가해서 오염시키는 것을 방지할 수 있을 뿐 아니라 IIFE 내부 안으로 다른 변수들이 접근하는 것을 막을 수 있는 방법이다.
  • 두 번째 부분은 즉시 실행 함수를 생성하는 괄호()이다. 이를 통해 자바스크립트 엔진은 함수를 즉시 해석해서 실행한다.

특징 1 표현 내부의 변수는 외부로부터의 접근이 불가능하다.

(function () {
    var aName = "Barry";
})();
// IIFE 내부에서 정의된 변수는 외부 범위에서 접근이 불가능하다.
aName // throws "Uncaught ReferenceError: aName is not defined"

특징 2 IIFE를 변수에 할당하면 IIFE 자체는 저장되지 않고, 함수가 실행된 결과만 저장된다.

var result = (function () {
    var name = "Barry";
    return name;
})();
// 즉시 결과를 생성한다.
result; // "Barry"

번외

객체생성 및 생성자

Person이라는 객체의 생성자를 만들고 객체를 생성했을 때 해당 데이터나 메서드를 계속해서 재사용할 수가 있다.

생성자는 객체를 생성할때 기본적으로 세팅할 수 있는 값이다.

뷰 인스턴스도 마찬가지 인데

뷰 객체를 생성할 때 이 생성자에 뷰 실행에 필요한 객체 리터럴을 전달한다.

var vm = new Vue({
    el:'#app',
    data:{
        message: 'hi',
    }
});

 

참고

https://www.inflearn.com/course/age-of-vuejs

https://developer.mozilla.org

'이전자료 > 웹개발' 카테고리의 다른 글

HTTP/1.1에서 HTTP/2로 변경, 웹페이지 1초 단축  (0) 2022.01.19
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:x.x.x:compile 에러  (0) 2022.01.19
SQL 튜닝 및 사례 연구 (SQL 튜닝, 인덱스 튜닝)  (0) 2022.01.18
SQL 튜닝 및 사례 연구 (조인 튜닝)  (0) 2022.01.18
자바스크립트 압축(uglifsjs) 및 복원(beautify) 하기  (0) 2022.01.17
'이전자료/웹개발' 카테고리의 다른 글
  • HTTP/1.1에서 HTTP/2로 변경, 웹페이지 1초 단축
  • Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:x.x.x:compile 에러
  • SQL 튜닝 및 사례 연구 (SQL 튜닝, 인덱스 튜닝)
  • SQL 튜닝 및 사례 연구 (조인 튜닝)
나의 로그
나의 로그
안녕하세요
  • 나의 로그
    Log
    나의 로그
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • 실무 (0)
        • 코인거래소 (0)
      • 개인공부 (2)
        • TIL (2)
      • 이전자료 (24)
        • 웹개발 (16)
        • 서버 (7)
        • 프로그램 (1)
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
나의 로그
Vuejs Reactivity 이해하기
상단으로

티스토리툴바