ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1장. Vue.js 소개
    개발 공부/Do it! Vue.js 입문 2025. 5. 18. 09:00
    반응형



     

    1장

     

     

     


    01-1 Vue.js란 무엇인가?

    <Vue.js란>

    • Vue.js(뷰) 웹 페이지 화면을 개발하기 위한 프런트엔드 프레임워크이다.
    • 기존 웹 개발자뿐만 아니라 HTML, CSS, 자바스크립트 기초만 아는 웹 개발 입문자 및 컴퓨터 비전공자들도 배우기 쉽게 만들어졌다.
    •  화면단 라이브러리이자 프레임워크라고도 볼 수 있다.
      • 라이브러리 : 자주 사용되는 기능들을 모아 재활용할 수 있도록 정리한 기술 모음집
      • 프레임워크 : 개발자들의 개발 생산성을 높이기 위해 일정한 툴과 규칙에 따라 개발하도록 미리 구조를 정의해 놓은 도구

    점진적인 프레임워크로서의 뷰의 의미

    • 위 그림은 뷰의 창시자인 에반 유(Evan You)가 2017년 Vue.js 컨퍼런스에서 발표한 프레젠테이션에 사용한 그림이다.
    •  코어 라이브러리는 화면단 데이터 표현에 관한 기능들을 중점적으로 지원하지만 프레임워크의 기능인 라우터, 상태 관리, 테스팅 등을 쉽게 결합할 수 있는 형태로도 제공된다. 즉, 라이브러리 역할뿐만 아니라 프레임워크 역할도 할 수 있다는 의미이다.
    • 공식사이트(https://vuejs.org/)에서도 뷰를 점진적인 프레임워크(progressive framework)라고 부른다.
     

    Vue.js - The Progressive JavaScript Framework | Vue.js

    Versatile A rich, incrementally adoptable ecosystem that scales between a library and a full-featured framework.

    vuejs.org

     

    <프레임워크 시장 속에서 뷰의 위치와 시장성>

    • 최근 프런트엔드 프레임워크 시장은 리액트(React)와 앵귤러(Angular)가 높은 점유율을 차지하고 있다.
    • 하지만 앵귤러를 이해하기 위해서는 방대한 크기의 프레임워크 구조를 이해해야 했기에 부담이 되었고, 에반은 앵귤러의 명시적 데이터 바인딩과 같은 필수적인 요소들만 가지고 화면을 구현하기 시작했고 오픈 소스화하면서 프레임워크 기능을 붙여 나가기 시작하였다. 그리하여 뷰가 탄생하였다.
    • 뷰는 2014년 2월 처음 공식 배포되었다.
    • 배포 4년 후 뷰는 깃허브(Github) 리포지터리의 별 개수가 80,300개나 될 정도로 인기가 많은 프레임워크가 되었다.

     

    <뷰의 장점>

    1. 배우기가 쉽다. HTML, CSS, 자바스크립트의 기초만 아는 입문자라도 하루 안에 배울 수 있고, 익숙한 실무 개발자라면 몇 시간 이내에 배울 수 있다.
    2. 리액트와 앵귤러에 비해 성능이 우수하고 빠르다. 뷰 제작팀에서 리액트와 앵귤러를 가지고 같은 테스트 케이스(test case)에서 성능을 비교한 결과 뷰가 가장 빠른 것으로 나타났다.
    3. 리액트의 장점과 앵귤러의 장점을 갖고 있다. 앵귤러의 데이터 바인딩 특성과 리액트의 가상 돔(Virtual DOM) 기반 렌더링 특징을 모두 가지고 있다.
      • 돔(DOM) : HTML 문서에 들어가는 요소의 정보를 담고 있는 데이터 트리

     


     

    01-2 Vue.js의 특징

    <UI 화면단 라이브러리>

    • 뷰(Vue.js)는 UI 화면 개발 방법 중 하나인 MVVM 패턴의 뷰 모델(ViewModel)에 해당하는 화면단 라이브러리이다.

    MVVM 구조에서의 Vue.js 위치

    • MVVM 패턴이란 화면을 모델(Model) - 뷰(View) - 뷰 모델(ViewModel)로 구조화하여 개발하는 방식을 의미한다.
      • MVVM의 정의 : 마크업 언어나 GUI 코드를 비즈니스 로직 또는 백엔드 로직과 분리하여 개발하는 소프트웨어 디자인 패턴
      • 정리하면 '프런트엔드의 화면 동작과 관련된 로직과 백엔드의 데이터베이스 데이터 처리 로직을 분리하여 더 깔끔하게 코드를 구성한다'는 것이다.
    • 이러한 방식으로 개발하는 이유는 화면의 요소들을 제어하는 코드와 데이터 제어 로직을 분리하여 코드를 더 직관적으로 이해할 수 있고, 추후 유지 보수가 편해지기 때문이다.
    • 좀 더 쉽게 이해하기 위해 위 그림의 용어를 하나하나 살펴보자.
    용어 설명
    뷰(View) 사용자에게 보이는 화면
    돔(DOM) HTML 문서에 들어가는 요소(태그, 클래스, 속성 등)의 정보를 담고 있는 데이터 트리
    돔 리스너(DOM Listener) 돔의 변경 내역에 대해 즉각적으로 반응하여 특정 로직을 수행하는 장치
    모델(Model) 데이터를 담는 용기. 보통은 서버에서 가져온 데이터를 자바스크립트 객체 형태로 저장
    데이터 바인딩(Data Binding) 뷰(View)에 표시되는 내용과 모델의 데이터를 동기화
    뷰 모델(ViewModel) 뷰와 모델의 중간 영역. 돔 리스너와 데이터 바인딩을 제공하는 영역

     

     

    MVVM 구조의 처리 흐름

    • 앞의 구조도 처리 흐름을 이해하기 위하여 구글 사이트를 살펴보자.
      • 먼저 뷰(View)는 사용자에게 비춰지는 구글 검색 화면 전체를 의미한다.
      • 돔(DOM)은 구글 로고, 검색 창, 키보드와 마이크 아이콘, [Google 검색] 버튼 등 화면에 나타나는 HTML 문서 상의 모든 요소를 의미한다.
      • 사이트에서 검색 창에 검색어를 입력하고 검색 버튼을 클릭하면 돔 리스너(DOM Listener)에서 버튼의 클릭을 감지한다.
      • 그리고 버튼이 동작하면 검색 결과를 보여주는 로직이 처리되고 이 처리 과정에서 데이터 바인딩(Data Binding)이 관여하는데, 검색 결과에 해당하는 데이터를 모델(Model)에서 가져와 화면에 나타낸다.
    • 이처럼 는 화면의 요소가 변경되거나 조작이 일어날 때 즉각적으로 반응하여 화면의 데이터를 갱신하여 보여 주는 역할을 한다. 화면의 표현에 주로 관여하는 라이브러리이기 때문에 화면단 라이브러리라고도 한다. 

     

    <컴포넌트 기반 프레임워크>

    • 뷰가 가지는 또 하나의 큰 특징은 바로 컴포넌트(Component) 기반 프레임워크라는 점이다.

    화면을 컴포넌트로 구조화한 컴포넌트 간 관계도

    • 컴포넌트란 마치 레고 블록과 같다. 레고 블록을 잘 조합해서 쌓으면 원하는 모형을 만들 수 있듯이 뷰의 컴포넌트를 조합하여 화면을 구성할 수 있다.
    • 위 그림에서 왼쪽 화면은 각 영역을 컴포넌트로 지정하여 구분한 것이며, 오른쪽 화면은 왼쪽 화면의 각 컴포넌트 간의 관계를 나타낸다.
    • 컴포넌트 기반 방식으로 개발하는 이유는 코드를 재사용하기가 쉽기 때문이다. 그리고 뷰의 경우 컴포넌트를 썼을 때 HTML 코드에서 화면의 구조를 직관적으로 파악할 수 있다.

     

    <리액트와 앵귤러의 장점을 가진 프레임워크>

    •  앵귤러의 양방향 데이터 바인딩(Two-way Data Binding) 리액트의 단방향 데이터 흐름(One-way Data Flow)의 장점을 모두 결합한 프레임워크이다.
    • 양방향 데이터 바인딩이란 화면에 표시되는 값과 프레임워크의 모델 데이터 값이 동기화되어 한쪽이 변경되면 다른 한쪽도 자동으로 변경되는 것을 말한다.
    • 단방향 데이터 흐름은 컴포넌트의 단방향 통신을 의미한다. 컴포넌트 간에 데이터를 전달할 때 항상 상위 컴포넌트에서 하위 컴포넌트 한 방향으로만 전달하게끔 프레임워크가 구조화되어 있는 게 바로 단방향 데이터 흐름이다.
    • 이 외에도 빠른 화면 렌더링(Rendering)을 위해 리액트의 가상 돔(Virtual DOM) 렌더링 방식을 적용하여 사용자 인터랙션(user interaction)이 많은 요즘 웹 화면에 적합한 동작 구조를 갖추고 있다.
      • 렌더링 : 브라우저에 웹 페이지를 그려내는 동작
    • 가상 돔을 활용하면 특정 돔 요소를 추가하거나 삭제하는 변경이 일어날 때 화면 전체를 다시 그리지 않고 프레임워크에서 정의한 방식에 따라 화면을 갱신한다. 따라서 브라우저 입장에서는 성능 부하가 줄어들어 일반 렌더링 방식보다 더 빠르게 화면을 그릴 수 있다.

     

     

     


    해당 글은 [Do it! Vue.js 입문] 책을 토대로 공부한 내용을 기록하기 위하여 작성됨.

     


     

     

     

    반응형
Designed by Tistory.