O612의 데브런닷 스튜디오

Angular, React, Svelte 그리고 Vue의 장단점

Angular, React, Svelte, Vue features
수정
featured image thumbnail for post Angular, React, Svelte 그리고 Vue의 장단점

Prologue

Angular, React, Svelte, 그리고 Vue의 장단점을 알려드리겠습니다.

글 작성일 기준으로 한국에서 실무 프로젝트로 많이 사용되는 순서는 React > Vue > Angular > Svelte 입니다

확장 프레임워크에서 단점이 해결된 경우에는 혼란을 주지 않기 위해 추가 설명을 붙였습니다


Angular

단점.

  • 허들(러닝 커브)이 높음 (Module, RxJS, Pipe, JavaScript, TypeScript, ... etc)

  • 가상(Virtual) DOM이기 때문에 SEO(Search Engine Optimization)에 취약

    → 'Angular Universal' 사용해서 해결

  • 초기 로딩 속도 이슈

  • Angular CLI 관련 문서의 불친절함

장점.

  • 개발사가 Google
  • TypeScript 기반 (Angular.js는 JavaScript 기반)
  • Angular CLI 사용하여 개발환경 지원
  • Module + Component 기반으로 동작
  • 생태계 풍부
  • Material Design 지원
  • NativeScript와 Ionic Framework을 이용해 App 제작 가능

React

단점.

  • 가상(Virtual) DOM이기 때문에 SEO(Search Engine Optimization)에 취약

    → 'Next.js' 사용해서 해결

    → React 18에서 Suspense를 사용해 SSR 렌더링 사용

  • JavaScript 기반이기 때문에 JavaScript에 대한 지식 필요

  • class형으로 개발시 필연적으로 렌더링이 느림

  • React Life-cycle에 대한 이해없이 개발하면 component가 느려질 수 있음

  • Next.js: document, window JavaScript 기본 API 사용에 제약이 있음

장점.

  • 개발사가 Meta (구 Facebook)
  • CMV(Controller, Model, View) 개념 없는 개발자도 쉽게 개발 가능 (component 방식)
  • (Component 분리가 제대로 되어 있다는 가정하에) UI 수정과 재사용 수월
  • 개발시 바뀐 component만 리-렌더링(Re-rendering)
  • function형 + React Hook을 이용해 속도 개선 가능 (쓰레기 같은 class형은 버립시다)
  • Redux, Recoil(Facebook에서 개발) 등을 이용해 상태관리 가능 (npm, yarn 패키지)
  • Axios를 이용해 JSON API 사용 가능. (npm, yarn 패키지)
  • Styled-components, Emotion, Sass 등 다양한 스타일 component 지원 (npm, yarn 패키지)
  • React Native를 이용해 App 제작 가능
  • React 18: Suspense SSR 렌더링을 이용해 HTML Streaming 지원
  • Next.js: SSR 렌더링 지원
  • Next.js: component 마다 각각 따로 head 태그 내부의 코드를 재설정할 수 있음
  • Next.js: Link, Image 등 렌더링 속도를 빠르게 하기 위한 장치들이 마련되어 있음

Svelte

단점.

  • 공식 문서가 불친절함
  • TypeScript 미지원 (방법은 있으나 불안정함)
  • 규모가 크지 않은 생태계

장점.

  • Runtime Library 불필요 (Svelte 컴파일러가 직접 JavaScript로 변환함)
  • 커스텀 이벤트 지원
  • return fragment 불필요
  • Context API, Store 등 많은 API를 npm, yarn의 패키지 없이 자체적으로 지원
  • 속도 빠름

Vue

단점.

  • 가상(Virtual) DOM이기 때문에 SEO(Search Engine Optimization)에 취약

    → 'Nuxt' 사용해서 해결

  • MVVM에 대한 개념이 있어야 개발 가능

  • JavaScript 기반이기 때문에 JavaScript에 대한 지식 필요

  • TypeScript 지원이 완벽하지 않음.

    → Vue 3에서 TypeScript 기반으로 변경

  • SVG 렌더링 속도 및 메모리 사용 부분에 약간의 이슈가 있음 (프레임 드랍, 메모리 점유 증가)

  • 규모가 크지 않은 생태계

장점.

  • Vue.js 3: TypeScript 기반으로 개발됨
  • style scope 지원
  • 양방향 binding, 단방향 binding 둘 다 지원
  • Instance Life-cycle 지원
  • Vuex를 이용해 상태관리 가능
  • Script 로딩 속도 빠름
  • Axios를 이용해 JSON API 사용 가능. (npm, yarn 패키지
  • Nuxt: SSR 렌더링 지원
  • Nuxt: component 마다 각각 따로 head 태그 내부의 코드를 재설정할 수 있음

Epilogue

이번 글에서는 각 프레임워크의 장단점을 알아보았습니다.

다음 글에서는 프레임워크 설치하는 방법을 알아볼 것 같아요. 설치 환경은 macOS입니다.

참고로, O612는 윈도우즈 환경에서 개발하는 게 딱히 좋다고 생각하지 않기 때문에 윈도우즈를 가지고 개발하는 글을 쓸 계획이 1도 없습니다.

20220110 shut up babe

윈도우즈는 짜져있어

FIN!

Copyright 2022 O612 DEV1L.studio develog w/ Devilish code