ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • vue.js 란?
    vue.js 2019. 7. 3. 18:23

     

     

     

     

     

    vue.js 란?

     

    vue.js 란 프런트엔드 웹 프레임워크다.

    프레임워크는 건축을 할 때 뼈대를 두고 살을 붙이는 작업이라기 보다는 건축을 할 때 필요한 재료들(이미 재단이 되어있는 재료들)을 제공을 해주어서, 우리가 그것들을 가지고 이리저리 합치고 뭉치고 해서 건물을 만드는 것이라고 한다. 

     

    -

     

     vue.js 는 구글에서 일하던 에번 유가 개발했는데, 구글에서는 AngularJS 라는 프레임워크를 이미 개발한 

    상태였다. 이미  AngularJS 가 있음에도  vue.js 를 개발한 이유는 다음과 같은 이유여서이다.

     

    1. AngularJS 는 배우기 쉬운 프레임워크가 아니다.

    2. AngularJS 는 양방향 데이터 바인딩 기능을 사용하는 싱글 페이지 어플리케이션 개발인데, 작성해야하는

    프로그램의 크기가 거지기 마련이었다.

     

     

    따라서 에번 유는 

     

    1. AngularJS 의 장점인 양방향 데이터 바인딩을 할 수 있으면서 단방향 데이터 흐름의 장점을 모두 가지며

    2. 기존의 웹 어플리케이션과 효율적으로 통합할 수 있고

    (React.js 는 현재 vue.js와 함께 많은 관심을 받은 프렌트엔드 웹 프레임워크지만, ES6 를 주로 사용해야하며 개발 중인 웹 사이트에 React.js로 개발된 프로그램을 추가하려면 별도의 프로젝트를 생성해서 빌드를 해야하기 때문에, 기존의 웹 어플리케이션과 효율적으로 통합하기 힘들다.)

    3. 가벼원 라이브러리

     

    인 vue.js를 개발하게 되었다.

     

    *양방향 데이터 바인딩 이란 화면에 표시되는 값과 프레임워크의 모델 데이터 값이 동기화 되어 한쪽이 변경되면 다른 한쪽도자동으로 변경되는 것을 말하고, 단방향 데이터 흐름은 컴포넌트의 단방향 통신을 말한다. 컴포넌트간에 데이터를 전달할 때 항상 상위 컴포넌트에서 하위 컴포넌트로 한 방향으로만 전달하게끔 프레임 워크가 구조화 되어있는게 단방향 데이터이다. 

     

     

     

     

    vue.js 특징 및 장점

     

    1. 가상 DOM 방식

    : vue.js는 가상 DOM의 방식으로 좀 더 효율적이고 빠른 처리 속도를 가진다.

     

    가상 DOM에 대해서 이해를 하려면 그 전에 html을 화면에 어떻게 그려지는지, 우리가 보는 웹페이지가 어떻게 

    보여지는지에 대해서 알아야 할 것 같다.

     

    우리가 브라우저를 띄우면 html을 읽어서  DOM트리를 만들게 된다.

    -----------------

    html

    body

    section

    div

    p

    span..

    -----------------

    이런식으로 말이다.

    DOM이 화면 위치를 잡고, css의 스타일을 받을것이다.

     

     

    이것이 그냥 html을 가져와서 가만히만 있으면 문제가 없겠지만,

    요즘 single page application (SPA) 이 생겨나면서 DOM을 수시로 변경하게끔 요청을 한다는 것이다.

     

    *SPA: 서버로부터 완전한 새로운 페이지를 불러오지 않고, 현재의 페이지를 동적으로 다시 작성함으로써 사용자와 소통하는 웹 어플리케이션이나 웹사이트 (단일 페이지 어플리케이션)

     

    DOM을 변경하는 요청이 들어오면, DOM트리에서 요청한 특정 노드를 찾아서 원하는 대로 변경을 해준다.

    그렇다면, 우리가 쓰는 웹페이지에 노드가 적으면 좋겠지만 

    우리가 쓰는 웹 페이지에는 수천개의 노드가 있을 수 밖에 없다. 



    즉, 100번 요청을 하면 DOM트리에서 노드를 찾고, 바꾸는 것을 100번 반복한다는 것이다. (극한직업;;)

    그러다보면 당연히 처리속도는 느려질 수 밖에 없고, 비효율적이게 되는 것이다.

    그것을 해결하기 위한 것이 가상 돔이다.

     

    가상 DOM을 활용하면 특정 DOM 요소를 추가하거나 삭제하는 변경이 일어날 때 화면 전체를 다시 그리지 

    않고 프레임 워크에서 정의한 방식에 따라 화면을 갱신한다.

     

    즉, 수정 요청이 오면 가상 DOM은 브라우저 대신 DOM 변경을 인지하고 그 내용을 가상돔에 반영한다.

    100번 할 것을 한번에 변경되는 값을 가상의 html코드로 만들어서 수정하고 실제 사용되는 DOM에 한번에

    적용시키는 방법이다.

     

    따라서 브라우저 입장에서는 성능 부하가 줄어들어 일반 렌더링 방식보다 더 빠르게 화면을 그릴수 있게 된다.

     

     

    2. 템플릿

    : vue.js는 vue 인스턴스나 컴포넌트에 있는 데이터를 표시하는 방법으로 기존 html 템플릿을 그대로 사용한다.

    컴포넌트에서 다루는 css도 기존 문법을 그대로 사용한다. 즉 별도로 배워야하는 부담감이 적어지는 것!

     

     

    3. 확장성

    : 웹 어플리케이션에서 우리는 동적 기능을 추가하기 위해 다양한 라이브러리와 프레임워크를 사용하기도 한다.

    그중 jQuery와 같은 라이브러리는 script 태그로 CDN을 추가해 쉽게 사용한다.

    vue.js도 jQuery 처럼 script태그로 CDN을 추가할 수 있다.

    *CDN: 웹 어플리케이션에 자바스크립트 프레임 워크나 라이브러리를 바로 사용할 수 있는 호스팅 서버

     

    --

     

    따라서 vue.js를 활용하면 로그인이나 회원가입 등 특정한 컴포넌트를 따로 만들고 필요한 곳에 적용해 기능을 쉽게 추가할 수 도있고, DOM 조작이 매우 빈번하게 일어나거나 사용자의 입력을 다로 받지 않는 프로그램(데이터 시각화 프로그램 등) 은 vue.js 를 통해 DOM 조작 횟수를 많이 줄일 수 있고, 성능을 향상 시킬 수 있다.

    'vue.js' 카테고리의 다른 글

    [vue.js] v-for  (0) 2019.07.03
    [vue.js] v-show, v-if, v-else  (0) 2019.07.03
    [vue.js] v-model  (0) 2019.07.03
    [vue.js] Mustache(이중중괄호), v-bind  (0) 2019.07.03

    댓글

Designed by Tistory.