저는 현재 인턴으로 근무하고 있는 스타트업에서 React, React Native, TypeScript를 공부하며 암호화폐 지갑 앱을 개발하고 있습니다. React를 공부하던 중 주요 JavaScript 라이브러리와 프레임워크로 자리 잡은 Angular, React, Vue.js 의 차이가 궁금해졌고, 이 글에서 React 와 Angular, React와 Vue.js 를 각각 비교해 보고자 합니다.
" JavaScript Framework가 정말 많은 요즘, 어떤 Framework를 써야 할까? "
프레임워크 특성을 살려 진행하려는 프로젝트의 목적에 가장 부합하는 프레임워크
React vs Angular
먼저, Google에서 만든 Angular는 프레임워크(Framework)이고, Facebook에서 만든 React는 UI 구성요소 라이브러리라고 할 수 있습니다. React는 자체적으로 개발에 필요한 모든 요소들을 제공하지 않으며, 제대로 활용하기 위해선 추가적인 구성이 필요하기 때문에 엄격히 말해 프레임워크라고 표현하지 않습니다.
- Data Flow
Angaular가 처음 발표되었을 때 가장 강력한 기능 중에 하나가 양방향 데이터 바인딩(상위 컴포넌트에서 하위 컴포넌트로 혹은 하위 컴포넌트에서 상위 컴포넌트로)이었습니다. 이는 코드를 짜기에도 편하고 이해하기 쉽지만, 애플리케이션의 크기가 커지면서 데이터 바인딩을 위한 흐름이 난잡해지고 복잡도가 상승하는 문제가 발생합니다.
반면, React는 양방향 바인딩에서 오는 복잡도 증가를 해결하기 위해 상위 컴포넌트에서 하위 컴포넌트로만 데이터가 흐릅니다.
그렇다면, React에서 하위 컴포넌트에서 상위 컴포넌트의 데이터를 변경하려면 어떻게 해야 할까 ?
상위 컴포넌트의 데이터를 변경하는 메소드를 하위 컴포넌트에 Props로 넘겨주면 된다.
- Component
- Rendering
- TypeScript 지원
React와 Angular 모두 TypeScript 를 지원합니다.
React vs Vue.js
- Data Flow
Vue.js 또한 React 와는 다르게 v-model 을 통해서 양방향 데이터 바인딩 을 지원합니다.
- Component
- Rendering
Vue.js는 React 와 같이 Virtual DOM 이라는 개념을 도입하였습니다.
- TypeScript 지원
React와 Vue.js 모두 TypeScript 를 지원합니다.
결론
참고
https://joshua1988.github.io/web-development/translation/why-we-moved-from-angular2-to-vuejs/
https://joshua1988.github.io/web_dev/vue-or-react/
http://www.incodom.kr/Angular_vs_React
http://blog.jeonghwan.net/vue/2017/03/29/is-vue-better-than-angular-react.html