React vs Vue
Title
React vs Vue
Category
ThoughtsTags
Aliases
React vs Vue
Vue vs React
Related
Framework-Agnostic
Domain-specific-language
변성(Mutable)-vs-불변성(Immutable)
v-model
React-Hooks
Headless-UI
Created
2 years ago
Updated
last year
React 유저에게 Vue 사용을 가로막는 것
TIP
Anthony Fu는 Vue, Nuxt, Vite 팀의 코어 멤버이며, Vitest, VueUse, UnoCSS, Slidev의 저자입니다.
그가 남긴 질문에 300개가 넘는 의견들이 있었고, 개인적으로 인상적인 답변을 모아 정리하였습니다.
1. 생태계(Ecosystem)
- Migrate from v2 to v3
- Production Ready Frameworks
- Libraries
- React 생태계의 다양한 라이브러리가 언급되었는데, 그 중 중요하게 언급된 것들은 아래와 같다.
- Radix UI
- swr, react-query
- GraphQL (apollo)
- Framer Motion
- 프레임워크에 구애받지 않는 MotionOne, GSAP(greensock) 등이 있지만, Framer Motion은 React와 긴밀히 통합되어 멋진 선언적 API를 제공한다.
- React Native
- Majority & Popularity & Market
2. TypeScript support & Editor experience
- Vue는 v3부터 TypeScript 지원이 강화되었고, Volar를 사용하여 VS Code에서 더 나은 경험을 제공한다.
- TypeScript를 지원하지 않는 라이브러리가 너무 많다.
3. 그 외
- template vs JSX
- Vue의 API가 너무 많다.
- 너무 많은 키워드를 기억해야 한다.
- 불변의 개념
- Vue의 양방향 바인딩으로 인해 비즈니스 로직이 Vue 프레임워크와 결합된다.
- React는 뷰 레이어에 더 집중하고, Vue는 MVVM 패턴으로 뷰 레이어보다 더 많은 일을 한다.
- 시도할 이유가 없다.
Vue 유저 관점에서의 장점
- React hooks의 정신적 부담(mental burden)
- 반응형 시스템
- 단일 파일 컴포넌트
- Vue 생태계는 React보다 모든 프레임워크를 위한 도구 체인을 더 많이 제공한다. Vite, Vitest
- 평균 프론트엔드 개발자보다 HTML/CSS를 더 잘 아는 사람들에게 적합하다.
Thoughts
- 두 프레임워크 모두 웹 애플리케이션을 제작하기에 충분히 성숙한, 훌륭한 프레임워크이다.
- 생태계 관점
- Vue는 어느 기업에도 의존하지 않는다.
- React는 Meta(구: Facebook)의 주도로 빠르게 발전한다.
- 진입 장벽 or 러닝 커브 관점
- React
- 특히 Hooks와 관련된 "멘탈 모델"을 확립하는 것이 중요하다.
- 또한, React는 UI를 만드는 부분만 담당하기 때문에 전역 상태 관리, 라우팅, 데이터 페칭, Scoped CSS 등에 서드 파티 라이브러리를 사용해야 한다.
- 서드 파티 라이브러리가 많기 때문에 이를 학습하는 비용이 있을 수 있다.
- 신규 기능이 Vue에 비해 빠르게 추가된다.
- Vue
- 라이프사이클, 디렉티브, 믹스인 등 활용할 수 있는 다양한 옵션들이 많이 존재한다.
- Vue에서는 자체 Scoped CSS 기능이 있고, 공식적으로 관리하는 라우터, 상태 관리 등의 라이브러리가 존재한다.
- 일관되게 사용할 수 있다.
- 더 적은 수의 라이브러리에 의존할 수 있다.
- React
- 데이터 바인딩
- React
- 데이터(props, state)가 바뀌면 View를 새로 렌더링하는 방식
- Vue
- 인스턴스의 데이터가 변경되었을 때, 데이터를 업데이트해서 렌더링
- 느낌
- React는 상태 변경마다 컴포넌트를 렌더링하기 때문에, 함수의 의존성(props)에 따라 최적화해주는 작업들이 조금 번거로울 수 있다.
- useEffect, useCallback, React.memo
- React Hooks 멘탈 모델을 확립하는 것
- React Hooks에 대해 잘못 이해하고 사용할 수 있다.
- 멘탈 모델을 확립하면 라이프사이클에 의존하지 않고 개발할 수 있어서 편하다.
- Hooks를 통해 컴포넌트 사이에서 상태 로직을 재사용할 수 있다.
- React는 상태 변경마다 컴포넌트를 렌더링하기 때문에, 함수의 의존성(props)에 따라 최적화해주는 작업들이 조금 번거로울 수 있다.
- React
- React 생태계에는 radix-ui, react-aria 등 접근 가능한 컴포넌트(Accessible Components)를 만드는데 도움이 되는 라이브러리가 풍부하다.
- Vue 생태계에서 Headless / Unstyled UI로 선택할 수 있는 것은 Headless UI 가 유일하며, Vue 3 만을 지원한다.
- vue-query는 react-query의 포트이다.
- react-query는 v4 부터 TanStack/query을 통해 agnostic 지원을 준비 중인 상태이다.
- 명확한 이점 없이 프레임워크를 변경하지 마라