리액트
뷰
리액트: 자유롭게
// && 연산자 방식
<div>
{isVisible && <button>조건에 따라 사라질 버튼</button>}
</div>
// 삼항 연산자 방식
<div>
{isVisible ? <button>조건에 따라 사라질 버튼</button> : null}
</div>
뷰: v-if쓰는 한가지 방법
<div>
<button v-if="isVisible">조건에 따라 사라질 버튼</button>
</div>
리액트는 jsx(JavaScript XML, html 역할) 형태로 코드를 작성하는데 자바스크립트만을 사용해 UI로직과 DOM을 구현
뷰는 HTML, JS, CSS 코드 영역을 분리해서 작성
뷰가 리액트보다 코드 가시성 및 생산성이 좋다는 평이 많음
<template>
<html>
</html>
<script>
</script>
<style>
</style>
</template>
Typescript: JavaScript를 기반으로 정적 타입 문법을 추가한 프로그래밍 언어
데이터를 정적으로 맞추면 에러 핸들링이 더 간편해지고, 완성도가 높아짐
리액트에서는 타입스크립트를 사용할 때 편리할 뿐 아니라 함수형 프로그래밍을 적극적으로 활용하기 쉬움
함수형 프로그래밍을 하기 위해선 순수 함수 및 매개변수의 데이터 타입을 고정하는 작업이 필수적인데, Typescript를 사용해 쉽게 처리할 수 있음
뷰도 Typescript 지원하긴 하지만, 사용하기 위해서 많은 부분에서 Typescript 모듈을 사용해야하고, 사용하기 위해서 코드 변경에 노력이 필요
뷰에서는 nuxt를 사용하는 일이 잦은데, nuxt와 Typescript의 호환이 아쉬움
리액트
배워야 할 것들이나 코드의 자유도가 더 높기 때문에 리액트가 더 높음
(상태관리에서, 리액트는 mobX, 리덕스, 리코일 등의 상태관리 트렌드의 변화를 알야아 하고, 리덕스의 경우 수 많은 미들웨어에 대한 이해, 연동되는 모듈)
리액트로 웹 어플리케이션을 제작하려면 상태 관리, 라우팅, 빌드 시스템을 모두 만들어가야하기 때문에 초심자 입장에서는 버겁게 느껴질 수 있음
create-react-app 명령어로 리액트 프로젝트 만들 수 있게 됨.
-> but 그 안에 세부적인 개념들을 알기까지는 시간이 걸림
뷰
뷰에서도 vuex, vue-routing 등의 모듈을 사용해야 하지만 해당 기능에 대한 구축 및 개발을 빌트인에 가까운 수준으로 설명하고 사용할 수 있음
vue-cli를 통해 프로젝트를 만들고, 코드를 수정하면서 하나하나 업그레이드
페이지와 컴포넌트, 라우팅 등을 이미 주어진 코드 프리셋에서 조금씩 수정하면서 만드니까 비교적으로 쉽고, HTML, CSS, JS 영역이 분리되어 있어 이해하기도 쉬움
사용성, 생산성 - 뷰
트랜드, 범용성 - 리액트
Vue
규모가 작고 가벼운 프로젝트를 빠르게 만들고 싶다.
속도 이슈에 매우 민감한 사이트이다.
자바스크립트 문법에 미숙하다.
회사에 퍼블리셔가 따로 존재한다.
기존 html css js 구조로 작성된 코드를 spa로 옮기고 싶다.
개발자간 코드 통일성을 위한 커뮤니케이션 비용을 줄이고 싶다.
백엔드 개발자다.
React
프로젝트의 규모가 크다. 점점 더 확장 될 것이다.
자바스크립트 문법에 능숙하다.
컴포넌트를 작은 단위로 나누어 비슷한 UI 재사용을 많이 할 예정이다.
커스터마이징 및 자유도가 높은 개발 환경을 좋아한다.
타입스크립트를 사용할 것이다.
넓은 커뮤니티 및 개발 인력시장의 혜택을 보고싶다.