React
React란 "지속적으로 데이터가 변화하는 대규모 애플리케이션 구축", 오로지 VIEW만 담당하는 라이브러리
Component는 UI를 구성하는 개별적인 뷰 단위로 전체 앱은 각 Component들이 결합해서 만들어 지게 되는데 무엇보다 각 Component들은 앱의 다른 부분,
또는 다른 앱에서 쉽게 재사용이 가능하다. Redux의 창시자이며, 현재는 Facebook React Core팀의 일원인 Dan Abramov는
React의 목표가 성능보다는 유지가능한 앱을 만드는 것에 있다고 설명한다.
가상 돔이란 렌더링 과정에서 리플로우와 리페인트가 자주 수행되는 문제를 해결하기 위해 화면에 표시되는 DOM과 동일한 DOM을 메모리상에 만들고
DOM 조작이 발생하면 메모리상에 생성한 가상 돔에 모든 연산을 수행한 후, 실제 DOM을 갱신하여 리플로우/리페인트 연산을 최소화 하는 것이다.
단방향 데이터 바인딩은 단 하나의 Watcher가 자바스크립트의 데이터 갱신을 감지하여 사용자의 UI 데이터를 갱신합니다.
사용자가 UI를 통해 자바스크립트의 데이터를 갱신할 때는, 이벤트를 통해 갱신하게 됩니다.
이처럼 단방향 데이터 바인딩은 하나의 Watcher를 사용하기 때문에 양방향 데이터 바인딩이 가지는 성능적인 이슈를 해결하고 더 확실하게 데이터를 추적할 수 있게 해줍니다.
함수 컴포넌트에서 React state와 생명주기 기능(lifecycle features)을 “연동(hook into)“할 수 있게 해주는 함수입니다. Hook은 class 안에서는 동작하지 않습니다. 대신 class 없이 React를 사용할 수 있게 해주는 것입니다.
View 부분만을 관리하기 때문에 다른 부분은 써드파티 라이브러리(Third party library, 패키지)를 이용하거나 직접 구현해야한다.
Angular
Angular란 확장가능한 컴포넌트 구조로 웹 애플리케이션을 만드는 프레임워크입니다.
라우팅, 폼 관리, 클라이언트-서버 통신 등 웹 개발에 필요한 라이브러리를 조화롭게 통합한 모음집입니다.
완전한 프레임 워크로, 프로젝트의 생성, 테스트, 빌드, 배포를 위한 모든 기능을 제공합니다.
코드 유지 관리 성을 높이기 위해 TypeScript를 사용하고, (일단은) 당분간은 안정적으로 지속적인 기술 지원이 이루어지고 있기 때문에 유지 측면에서 장점이 있습니다.
프로젝트 생성을 도와줍니다. 명령어 하나로 프로젝트를 생성하고 알아서 모든 의존성 패키지를 함께 설치해줍니다.
모듈/컴포넌트/디렉티브/서비스 등을 생성하는 역할 또한 Angular cli로 할 수 있습니다.
라이트 한 서버를 제공합니다. 별다른 설정에 대한 노력 없이 간단하게 서버를 실행하여 개발을 진행할 수 있습니다. 코드를 수정하면 즉시 변경사항이 반영되어 웹페이지에서 렌더링 됩니다.
Node.js의 nodemon이나 기존 client의 livereload와 비슷하게 생각하면 될 것 같습니다.
기본적으로 Webpack을 내장하고 있으며 알아서 빌드까지 수행합니다. Typescript를 컴파일하고 자바스크립트를 압축하는 것까지 자동으로 해주며, (저와 같이) 웹팩에 대한 지식이 전혀 없어도 사용 가능합니다.
테스트도 할 수 있어요!
모델 상테는 해당 UI 요소의 모든 변경 사항을 반영합니다. 반대로 UI 상태는 모델 상태의 모든 변경 사항을 바인딩합니다.
=> 이 기능을 통해 프레임워크에서 컨트롤러를 통해 DOM을 모델 데이터에 연결 할 수 있습니다.
앵귤러는 "내가 너희를 위해 모든 것을 제공 하노라!" 라는 정신으로 무장한 건지, 정말 소소한 것들에 대해서까지 많은 것을 제공합니다. 애초에 시작 시점에 배워야 하는 것들이 많긴 합니다.
처음 접근을 위해서 뭔가 공부해야 할 사항이 늘어나는 것 같습니다.
Angular CLI, Typescript, Module, Component, RxJS, Form, Router, Pipe, directive...
초반에 접근하기 매우 어려운 프레임 워크이다.
프레임워크답게, 기본적으로 앵귤러 프로젝트를 생성하면 기본 폴더 용량이 어마어마합니다. (대부분의 용량은 node_modules가 차지합니다)
물론 빌드 후 결과물은 작습니다만, 어쨌든 처음 접근을 위해서는 꽤나 많은 자원을 필요로 합니다.
Angular는 업데이트 주기가 빠르고 업데이트에 따라 코드를 변경해야 할 수도 있습니다.
Vue
Vue( view 와 마찬가지로 /vjuː/ 라고 발음합니다 )는 사용자 인터페이스를 구축하기 위한 JavaScript 프레임워크입니다.
표준 HTML, CSS 및 JavaScript를 기반으로 구축되며, 단순한 것 부터 복잡한 것 까지 사용자 인터페이스를 효율적으로 개발할 수 있는 컴포넌트 기반 프로그래밍 모델을 제공합니다.
가상 돔 기반의 성능 최적화는 대부분의 상황에서 효과적이지만, 매우 큰 규모의 애플리케이션에서는 성능에 제약이 있을 수 있다.
Next
Next.js는 React 기반의 웹 프레임워크로, 웹 애플리케이션 및 웹 사이트를 개발하기 위한 도구와 기능을 제공한다.
특히 서버 사이드 렌더링 (SSR) 및 정적 사이트 생성 (SSG)과 같은 고급 기능을 지원하여 성능 최적화 및 검색 엔진 최적화 (SEO)를 향상시키는 데 도움이 된다
성능 향상과 검색 엔진 최적화(SEO)를 위한 SSR 및 SSG를 쉽게 구현할 수 있다.
getServerSideProps 또는 getStaticProps와 같은 메서드를 사용하여 데이터를 가져와 페이지에 주입할 수 있다.
이는 서버 사이드 렌더링 및 정적 사이트 생성과 함께 사용된다.
React와 함께 사용되므로 React에 익숙하지 않은 개발자에게는 초기 학습 곡선이 존재할 수 있다.
프로젝트의 규모가 커질수록 구성 및 설정이 복잡해질 수 있다.
SSR을 사용할 때 서버 리소스가 필요하므로 서버 비용이 증가할 수 있다.
데이터 가져오기 메서드를 사용할 때 몇 가지 복잡성이 발생할 수 있으며, 특히 초기 설정이나 오류 처리 관점에서 주의가 필요하다.
Next.js는 React에 의존하므로 React와 함께 업데이트 및 유지 관리되어야 한다.
■ 앵귤러를 선택해야 하는 경우
■ 리액트를 선택해야 하는 경우
■ 뷰를 선택해야 하는 경우
프레임워크이다
.⇒ Next.js는 개발 프로세스를 최소화하기 위한 다양한 도구와 기능을 제공
하는 반면 React.js는 모바일 및 웹 애플리케이션의 프런트 엔드 개발을 위한 더 나은 리소스를 제공
합니다.
해당 사항을 통해 React와 Next 둘 중 하나로 생각이 좁혀 졌고, 이번에 Next의 새로운 버전인 14가 자세히 조사해 보니 기존 함수는 사용할 수 있게 해놨고, 추가적인 업데이트에 php 처럼 front에서 sql문을 조작할 수 있게 만들어 놔서 논란이 됨.
=> 즉 해당 sql문 조작 부분을 사용하지 않으면 기존 코드를 사용할 수 있으며, 성능도 매우 빨라진 모습을 보여줘 호평을 받고 있음.
그래서 개인적인 생각으로는 오류를 최대한 잡아줄 수 있는 TypeScript와 속도나 성능면에서 많이 개선이 된 NextJs를 쓰는 것이 좋을 것 같다.