본문 바로가기

Front-End

[Front-End] Angular, Vue, React

시대가 지나면서 사용자들이 원하는 기능이 많아지고 웹이 발전함에 따라 프론트엔드 기술에도 변화가 일어났다.
 

1세대 2세대 3세대
HTML / CSS / JavaScript jQuery Angular, Vue, React
기본적인 HTML, CSS, JavaScript로 DOM을 조작하고 이벤트를 발생시킨다. JavaScript에서 빈번히 사용되는 기능들을 모아 사용이 가능하지만 결국 DOM을 조작한다는 행위에서 벗어나지 못해 한계에 도달한다. jQuery 한계 이후 패러다임을 완전히 바꾼 새로운 프레임워크

 
이 중 Angular, Vue, React 각각의 의미와 차이에 대해 살펴보겠다.
 

 

1. Angular

: 2010년 Google에서 개발한 프레임워크
: TypeScript 기반으로 매우 안정적이고 잘 설계된 구조 내에서 개발이 가능하다.
: 다양한 기능이 내장되어 있지만 무겁고 배우기 어렵다.

: 양방향 바인딩으로 Model과 View가 연결되어있어 데이터 값이 한쪽에서 변화하면 다른 쪽에서도 바로 업데이트가 진행된다.
 

2. Vue

: 2014년 Evan You라는 개인에 의해 만들어진 프레임워크
: Angular와 마찬가지로 Vue만의 문법과 규칙이 있다.
: Angular, React가 개발된 후 장점을 가지고 만들었기 때문에 문법과 규칙을 쉽게 만들어 비교적 러닝 커브가 낮다.
: 프레임워크로써 다양한 기능이 내장되어 있다.

: 단방향 / 양방향 바인딩
 
 

3. React

: 2013년 Facebook에서 개발한 라이브러리
: 프레임워크인 Angular, Vue와 달리 React는 라이브러리다.
: view만을 담당하는 라이브러리로 내장되어있는 기능이 부족해 third-party 라이브러리(react-router-dom, redux)를 함께 사용한다.

: 단방향 데이터 바인딩으로 데이터 변화에 따른 성능 저하 없이 DOM 객체의 갱신이 가능하며 코드를 이해하기 쉽고 데이터 추적과 디버깅이 쉽다.
 
 

*프레임워크, 라이브러리*
프레임워크
: 애플리케이션 개발 시 필수적인 기능들을 위한 뼈대를 제공한다.
: 모든 환경과 도구를 제공해주지만 프레임워크가 지원해 주는 기능을 따라 작업해야 하므로 기술 활용을 위한 러닝커브가 높다.
: ex) Java개발 => Spring 프레임워크, Python개발 => Django, Android앱개발 => Android

라이브러리
: 개발에 필요한 것들을 미리 구현해놓은 도구로 재사용이 가능한 기능을 미리 구현해 놓고 필요한 곳에서 호출하여 사용 가능하도록 만들어진 집합
: 목적을 위한 하나의 도구를 제공받는 것으로 원하는 기능을 선택할 수 있지만 다른 도구들을 기본적으로 제공하고 있지 않아 스스로 선택해서 조합해야 한다.

 

 

 

 

참고

[1] 프레임워크(Framework)와 라이브러리(Library)의 차이 : https://code-lab1.tistory.com/284

[2] React와 Vue, Angular의 차이점 : https://daojiong.tistory.com/66

[3] React란 무엇인가? : https://hymndev.tistory.com/45