프레임 워크
뼈대나 기반구조
프로그램을 개발하기 위해 사용되는 틀을 제공하는 프로그램
프레임워크의 특징
- 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성
- 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의
- 컴포넌트들은 재사용이 가능
- 높은 수준에서 패턴들을 조작화 가능
라이브러리(Library)
소프트웨어를 개발할 때 프로그래밍 사용하는 비휘발성 자원의 모임, 공통으로 사용될 수 있는 특정한 기능들을 모듈화
리액트는 프레임워크가 아닌 라이브러리
라이브러리 종류
- react: 리액트를 사용하기 위한 라이브러리
- react-dom: react와 DOM 사이에 연결
- react-scripts: 리액트 프로젝트 초기 셋업 도움
- babel-cli: 바벨을 터미널에서 사용하기 위해 필요
- babel-preset-env: 바벨의 여러 버전을 자동으로 설치
- babel-preset-react: 리액트에서 바벨 사용 허가
- webpack: 웹팩 사용 허가
- babel-core: 웹팩용 바벨
- babel-loader: 웹팩에서 바벨을 로드
프레임워크와 라이브러리의 차이점
제어 흐름에 대한 권한 유무
프레임워크
통제권 => 프레임워크
코드를 연결할 수 있는 위치를 제공
필요에 따라 사용자가 연결한 코드를 호출하는 제어 흐름 권한
제어 흐름에 대한 주도성 강함
프로그램이 필요한것을 개발자에게 알려줌으로써 제어권을 역전
사용자는 프레임워크가 제공하는 틀에 따라 코드를 작성
라이브러리
통제권 => 사용자
애플리케이션의 흐름을 사용자가 직접 제어
사용자가 전체적인 흐름을 만들며 라이브러리를 사용
재료의 선택권이나 통제권은 사용자에게
개발자가 필요할 때 마다 설치, 혹은 호출함으로써 개발자가 능동적으로 사용
제어역전?
어떠한 일을 하도록 만들어진 Framework에 Control 권한을 위임
개발자가 해왔던 일(제어)을 프로그램. 즉, 프레임워크가 대신 기능
참고사이트
https://canoe726.tistory.com/23