기회가 닿아 공부하면서 정리도 할 겸 쓰는 글
사실 리액트는 프레임워크로 분류하지 않지만 같이 껴넣어봤다.
우선 세가지 모두 공통적으로 자바스크립트로 작성 되었고 웹 애플리케이션 개발을 위한 라이브러리/프레임워크이다. 세가지의 차이점과 특징을 비교해보려한다.
양방향 바인딩: React는 기본적으로 단방향 데이터 흐름(부모 → 자식)을 따르지만, Angular는 양방향 바인딩을 지원하여 데이터가 변경되면 UI가 자동으로 업데이트되고, 반대로 UI 변경도 데이터에 즉시 반영된다.
- 데이터가 변경되면 UI가 자동으로 업데이트되고, UI 요소에서 변경이 발생하면 데이터도 자동으로 업데이트
의존성 주입(Dependency Injection) : 외부에서 의존 객체를 생성하여 넘겨주는 것 일반적인 객체 생성의 경우에는 클래스 안에서 사용할 객체를 생성하지만, 의존성 주입의 경우 외부에서 생성된 객체를 주입 받는 방식이다. 의존성 주입을 사용한다면 클래스 간의 결합도를 낮춤으로 재사용성과 테스트하기 용이하게 된다.
리액트는 사용자 인터페이스 구축에 용이한 자바스크립트 라이브러리이다. 재사용 가능한 코드 개발과 반응형 웹 구축에 많이 사용
라이브러리와 프레임워크 차이
가장 큰 차이점은 제어흐름의 권한이 어디있는지 라이브러리는 개발하는 우리가 직접 애플리케이션 코드의 흐름을 제어해야하는 반면, 프레임워크는 우리가 프레임워크가 정해둔 틀에 맞춰서 애플리케이션 코드를 짜고 그 틀 안에서 이 코드들이 실행된다.
- 라이브러리는 개발자가 필요할 때 직접 가져다 쓰는 도구, 프레임워크는 전체 흐름과 구조를 프레임워크가 정해줌
- React는 왜 라이브러리라고 할까?
React는 UI를 그리는 "View만 담당하는 라이브러리".
라우팅, 상태관리, 빌드 등은 직접 선택하고 조립해야 하기 때문에 그래서 프레임워크가 아니라 라이브러리라고 불린다.
상태관리(state management)는 컴포넌트 간에 공유되는 데이터(상태)를 어떻게 저장하고, 전달하고, 갱신할지를 관리하는 방식이다. 다양한 패턴이 있는데 대표적인 몇가지만 비교해보려 한다.

Facebook이 제안한 단방향 데이터 흐름 구조
Action → Dispatcher → Store → View 구조로, 상태 변경이 예측 가능하게 만들어짐
사용자 입력을 기반으로 Action을 생성 하고 그것을 Dispatch에 전달하여 데이터가 모여있는 Store의 데이터를 변경하게 된다. 그 후 실제 렌더링 = View 에 반영됨
데이터 흐름 추적 용이
대표 라이브러리
- Redux: 가장 널리 쓰이는 Flux 패턴 상태관리 도구 (Flux에서 파생된 구조)
상태를 아주 작고 독립적인 단위로 나눠서 관리하는 구조. 각각의 atom은 독립적으로 존재하고, 컴포넌트는 필요한 atom만 구독함.
대표 라이브러리
- Recoil Facebook에서 만든 React 전용 atom 기반 상태관리. atom/selector 단위로 상태 조절.
JavaScript의 Proxy 객체를 활용하여 객체의 속성에 대한 접근, 할당, 삭제 등을 가로채고 추가적인 로직을 수행하는 방식
프록시(Proxy)의 사전적인 의미는 '대리인'이라는 뜻이다. 즉, 누군가에게 어떤 일을 대신 시키는 것을 의미하는데, 이를 객체 지향 프로그래밍에 접목해보면 클라이언트가 대상 객체를 직접 쓰는게 아니라 중간에 프록시(대리인)을 거쳐서 쓰는 코드 패턴이라고 보면 된다
대표 라이브러리
- Valtio : 상태 사용 추적 기법 기반으로 렌더링 최적화를 하는 라이브러리
개발 코드를 브라우저에서 동작 가능한 상태로 변환해주는 도구
프론트엔드 코드를 빌드하고 번들링하며, 최적화하고, 테스트하고, 배포하는 데 사용된다.
번들링 : 여러 JS 파일을 하나로 합침 번들러는 프로젝트에 포함된 파일(모듈)들을 연결하고 묶어서 브라우저가 실행할 수 있는 파일로 만들어준다. 이를 번들링한다고 한다.
HMR(Hot Module Replacement) : 개발 중인 애플리케이션의 특정 모듈을 새로 고침하지 않고도(브라우저를 새로 고침 하지 않고도) 교체할 수 있게 하는 기능
이전엔 주로 Webpack을 썼는데, 느리고 설정이 복잡하다보니 그걸 더 빠르고 가볍게 만든 대체 도구가 Vite 라고한다.
SPA, SSR, SSG 등 웹 애플리케이션 구조를 설계하고 제어하는 큰 틀
참고 : 서버사이드렌더링과 클라이언트사이드렌더링