: 원하는 기능 구현에 집중해 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 뼈대나 기반구조
Spring
Django
, Flask
Angular
, Vue.js
, Next.js
자체적인 실행 흐름(라이프사이클)을 가지고 있으며 그 흐름에 맞춰 프로그래머가 필요한 코드를 작성해야한다.
= 제어의 역전 👌
: 코드 작성시 활용 가능한 특정 기능에 대한 도구 or 함수들의 집합
사용자가 어플리케이션 코드의 흐름을 직접 제어하며, 필요한 경우 능동적으로 라이브러리를 호출해 사용한다.
= 제어의 역전 ❌
: 어플리케이션의 제어의 흐름 권한을 프레임워크에게 위임해, 프레임워크가 결정한 제어 흐름을 프로그래머가 따르는 방식
💡 React의 Render 라이프사이클을 고려할 때, React는 프로그램의 흐름에 작업을 추가해 프로그램 흐름을 바꾸는 것이 가능하기 때문에 라이브러리라고 할 수 있다.
componentwillMount()
→ render()
→ componentDidMount()
의 기본적인 라이프사이클 흐름을 가지고 있지만, 프로그래머가 필요에 따라 추가적인 동작 추가가 가능하다