소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것을 '프레임워크'라고 합니다.
앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래서, 메서드들을 구현하면 됩니다.
즉, 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 "골격", "뼈대"를 의미한다.
프레임워크는 파일 이름이나 구조 등을 정해진 규칙을 따라야만 하는데,
예를 들어 NextJS 에서 pages 폴더 안에 'index.js','about.js' 와 같은 파일을 만든다면,
NextJS 의 규칙에 따라 '/' 홈페이지와 '/about' URL 페이지가 생성된다.
추가적인 예시로, python 서버 개발에 사용되는 Django 와, Node.js 에서 가장 인기가 많은 Express.js 가 있다.
장점으로는...
단점
소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임. 즉 특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미합니다.
즉, 사용자는 내가 사용하는 라이브러리의 특정 기능을 가져와서 내가 원하는대로 사용할 수 있는 것을 의미한다.
예를 들어 Node.js 에서 npm 으로 설치한 모듈들, 내가 공부하고 있는 React.js, JQuery 등이 있다.
라이브러리와 프레임워크의 주요 차이점은 "Inversion of Control"(통제의 역전)입니다.
라이브러리에서 메서드를 호출하면 사용자가 제어할 수 있습니다.
그러나 프레임워크에서는 제어가 역전되어 프레임워크가 사용자를 호출합니다.
Inversion of Control"(통제의 역전) 이란, 어떠한 일을 하도록 만들어진 프레임워크에 컨트롤 권한을 위임하는 것을 의미한다.
즉, 프로그램의 제어 흐름 구조가 뒤바뀐 것을 뜻한다.
"라이브러리"는 사용자가 파일 이름이나 구조 등을 정하고, 모든 결정을 내릴 수 있지만
"프레임워크"는 파일 이름이나 구조 등을 정해진 규칙에 따라 만들고 따라야한다.
개념 확립하기 위해 공부해보았따.
늘 햇갈리던 부분이였는데, 머릿속에서 '프레임워크는 집, 라이브러리는 티비, 쇼파 등의 가구..' 라고 생각하니 이해가 잘되었다!
내일부터는 NextJS 공부닷