React, Angular, Vue에 대하여
React, Angular, Vue란
웹 분야의 눈부신 발전과 더불어 웹 개발의 복잡성도 같이 증가하였습니다. 개발의 복잡성이 늘어날 수록 개발의 생산성은 떨어지기 때문에 사람들은 이것을 줄이고자 많은 노력을 했습니다. 이러한 노력의 결과로 웹 프론트엔드(Front-end) 분야에서는 프레임워크나 라이브러리들이 등장하였는데 대표적으로 React, Angular Vue 프레임워크와 라이브러리들이 있습니다. 프레임워크와 라이브러리의 차이는 프레임워크는 뼈대나 기반 구조를 뜻하는데 애플리케이션을 개발하다 보면 보통 반복적으로 똑같이 개발해야하는 부분들이 생깁니다. 이러한 뼈대나 기틀을 미리 만들어서 제공해주는 것이 프레임워크입니다. 이러한 기능은 여러 명의 개발자들이 함께 객체 지향 개발을 할 때 일관성 부족의 문제를 해결할 수 있습니다. 라이브러리(Library)는 특정 기능에 대한 도구 또는 함수들을 모은 집합입니다. 그리고 제어의 역흐름(IoC Inversion of Control)의 권한이 누구에게 있느냐에 따라 프레임워크와 라이브러리를 구분합니다. 프레임워크는 전체적인 흐름을 자체적으로 가지고 있으면서 개발자는 그 안에서 필요한 기능을 추가하기 위한 코드를 작성합니다. 라이브러리를 사용해서 개발할 경우는 개발자가 전체적인 흐름을 가지고 필요한 기능을 가진 라이브러리를 추가하는 식으로 코드를 작성합니다.
React
React는 페이스북에서 웹 애플리케이션의 사용자 인터페이스를 만들기 위하여 개발한 Javascript 라이브러리입니다. React.js라고도 불립니다. React에서 가장 대표적인 특징은 가상 돔(Virtual DOM) 입니다. React는 가상 돔을 사용하여 DOM이 자주 갱신되는 싱글 페이지 애플리케이션의 리플로우(Reflow)와 리페인트(Repaint)를 최소화함으로 웹 페이지의 성능을 최적화 시켰습니다. 또한 JSX라는 템플릿 언어(Template language)를 사용합니다. 그리고 리액트는 단방향 데이터 바인딩을 사용합니다.
Angular
앵귤러(Angular)는 단일 페이지 애플리케이션 방식의 자바스크립트 프레임워크입니다. Angualr Js는 2012년 공식적으로 V1.0이 릴리즈되었습니다. 이후 Aungluar 2버전 이상이 개발되었습니다. Angular 2 버전 이상을 Angular라고 부르며, 2012년에 릴리즈된 Angular JS라고 부릅니다. 앵귤러는 프레임워크라는 이름에 걸맞게 프론트엔드 개발에 필요한 대부분이 구성되어있습니다. 그러므로 라이브러리를 쓰는 것만큼 자유도가 높지 않고 앵귤러 스타일에 맞게 코드를 짜야 하지만 그만큼 개발의 일관성과 방향성을 가질 수 있고 유지 보수하기 용이하다는 장점이 있습니다. 또한 양방향 데이터 바인딩이라는 특징을 가지고 있습니다.
Vue
뷰(Vue)는 리액트처럼 JSX라는 템플릿 언어를 사용하지 않기 때문에 HTML, CSS, JS만 알고 있어도 개발이 용이한 MVVM 패턴의 라이브러리입니다. 그리고 Anuglar의 장점인 양방향 데이터 바인딩과 React의 장점인 가상 돔 기반의 렌더링이 특징입니다.