부트캠프 세달차에 접어들면서 기업협업이 시작되었다. 가게 된 기업에서 NextJS를 쓴다길래 새로 공부하던 도중 NextJS는 라이브러리가 아닌 프레임워크라는걸 알게됐다. 이전까지는 라이브러리랑 프레임워크랑 같은 뜻인줄 알고 넘겼는데 막상 NextJS를 연습하다보니 리액트와는 뭔가 다르다는걸 느꼈고, 내가 찾아본 라이브러리와 프레임워크의 차이점을 공유하고자 한다.
소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한다.
-- 위키피디아
프레임워크는 개발 시 필수적인 코드와 알고리즘 같은 기능을 제공하는데 이 룰을 지켜야 한다. 기본적인 설계가 제공되기 때문에 로직구성에 더 신경쓸 수 있다.
여러명이서 개발을 진행할 때 각자의 취향이라던지 습관이 다 다르기 때문에 통일성을 이루기 힘들다. 프레임워크를 사용히면 기본적인 구조와 구성이 같기 때문에 코드의 통합성과 일관성을 높일 수 있다.
즉, 구현에만 신경쓸 수 있도록 프로젝트의 뼈대와 가이드가 제공되는 것이 프레임워크이다.
ex) Spring, AngularJS, Django •••
라이브러리(library)는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있다.
-- 위키백과
어떤 특정한 기능을 구현하기 위해 미리 만들어진 함수들의 집합이다. 필요할 때만 자유롭게 사용할 수 있는 일종의 도구이다.
라이브러리를 사용하더라도 프레임워크가 정한 방식에 따라야 하지만 어떻게 사용할 지는 개발자가 정할 수 있다.
ex) jQuery, React •••