프레임워크는 필요 없다. 중요한 것은 그림이지 프레임(그림틀)이 아니다. - 클라우스 킨스키
프레임워크란?
캠브리지 사전의 정의는 다음과 같다. 무언가를 만들 수 있는 지지 구조
이 정의는 소프트웨어 프레임워크의 일반적인 개념과 일치한다. 앵귤러 애플리케이션의 구조를 생각해 보면 이 정의와 정확히 일치하는 것을 알 수 있다. 앵귤러는 서비스, 구성요소와 파이프 같은 기본 요소를 사용해 애플리케이션을 빌드하는데 필요한 구조를 제공한다.
실제 애플리케이션에서 스택은 다른 요소들을 포함한다. loadash를 사용해 배열이나 객체를 조작하거나 moment.js를 사용해 날짜를 파싱할 수 있다.
이것이 프레임워크 도구일까? 자바스크립트 커뮤니티는 이를 라이브러리라고 부른다.
그렇다면 라이브러리와 프레임워크의 차이는 무엇일까?
프레임워크는 코드를 호출한다. 코드는 라이브러리를 호출한다.
프레임워크는 내부적으로 하나 이상의 라이브러리를 사용할 수 있지만, 개발자가 모듈식 프레임워크를 선택하면 프레임워크를 단일 단위나 여러 모듈로 보는 개발자에게 이러한 사실이 숨겨진다.
옵저버블
앵귤러는 옵저버블(Observable)을 사용한 반응형 프로그래밍용 라이브러리인 RxJS를 기반으로 설계됐다. 이 접근 방식은 HTTP 요청이 프라미스처럼 설계되는 다른 프론트엔드 프레임워크와 다르다. 프라미스는 비동기 작업의 최종 완료(또는 실패)를 나타내는 표준방법이다. RxJS를 사용하면 옵저버블을 프라미스로, 또는 반대로 프라미스를 옵저버블로 쉽게 변환할 수 있다.
리액트에 대해 이야기해보자
리액트가 라이브러리인지 프레임워크인지 이해하는 것이 프레임워크 방식과 어떤 연관이 있을까? 리액트는 라이브러리이다. 그러나 현실은 이보다 복잡하다. 리액트의 주요 제약 사항은 선언적 패러다임의 사용이다. DOM을 직접 조작하는 대신 컴포넌트의 상태를 수정한다. 그러면 리액트가 대신 DOM을 수정한다. 이 프로그래밍 방식은 리액트 생태계의 대부분의 라이브러리에서 통용된다.