프레임워크와 라이브러리의 차이

Le Jack
4 min readNov 15, 2022

--

서론

  • 흔히 프로그래밍을 하는 사람이라면 한번 쯤 들어보고 생각해봤을 주제이다.
  • 이 부분에 대해 깊게 관심을 가지는 사람들도 있는 반면 자연스럽게 스쳐지나갔을 수도 있다.
  • 본인들이 사용하는 기술들의 사이트를 방문해보면 이게 라이브러리인지 프레임워크인지 명시가 되어있다.
  • 그렇다면 왜 각 기술들은 라이브러리? 프레임워크? 비슷해보이지만 다른 둘, 어떤 기준으로 정하는 것일까?
  • 바로 그러면 프레임워크와 라이브러리가 어떤 것인지 그리고 차이점은 뭔지 알아보자.
▲ 좌측 상단부터 React, Vue,js, Next.js, Recoil

프레임워크(Framework)란?

일정한 틀 안에서 틀이 정한 일정한 규칙에 따라 작성해야한다.

  • 프레임워크는 그들이 제공하는 규칙과 가이드라인이 있으며 사용자는 이에 맞게 코드를 작성해 나가야한다.
  • 규칙과 가이드라인을 벗어나서 코드를 작성하면 정상적으로 동작하지 않을 수 있다.

라이브러리(Library)란?

여러 기능들을 담은 말그대로 도서관! 내가 원하는 것만 골라 꺼내 쓸 수 있다.

  • 라이브러리의 제작자가 코드를 작성해 기능을 만들고 그것들을 모듈화 해놓은 것이다.
  • 해당 라이브러리에서 만들어놓은 컴포넌트나 메소드, 등을 내가 원하는 곳에서 내가 원할 때 그리고 내가 필요한 것들을 호출해 가져다 쓰기만 하면된다.
  • 본인이 따로 커스텀할 수 있는 옵션이 있다면 그것 또한 라이브러리에서 제공하는 기능이므로 내가 필요할 때 옵션을 넣기만하면 된다.
  • 기본적으로 호출해서 바로 쓸 수 있다.

공통점

  • 재사용 가능하다.
  • 라이브러리의 경우 어디서나 내가 원할 떄 호출이 가능하니 호출이 즉 재사용을 의미한다.
  • 프레임워크의 경우 흐름에 맞춰 본인이 작성해놓은 코드를 원하는 곳에서 호출이 가능하다.

차이점

사용의 주도권을 누가 쥐고 있느냐

  • 프레임워크 : 프레임워크 자체가 쥐고 있으며 사용자는 프레임워크가 제시한 규칙에 따라 코드를 작성해야한다.
  • 라이브러리 : 사용자가 쥐고 있으며, 사용자는 자신이 원하는 기능만 호출해 사용하면 된다.

프레임워크는 라이브러리를 포함한다.

  • 프레임워크는 코드를 작성함에 있어서 필요한 라이브러리(기능)들을 제공해 줄 수 있다.
What is the difference between a framework and a library?

라이브러리도 정해진 규칙에 따라 호출해야하는 게 아닌가요?

  • 필자가 생각하는 가장 큰 차이점은 호출 즉시 바로 사용할 수 있느냐 이다.
  • e.g. 내가 A라는 기능을 원하는 경우
  • 라이브러리의 경우 찾아서 A 기능을 쓰면 된다.
  • 프레임워크의 경우 A 기능을 프레임워크에서 제공한 방식에 따라 직접 구현한다. A 기능을 제공한다면 그건 프레임워크의 라이브러리이다.
  • 프레임워크에서 제공하는 기능들 때문에 이게 프레임워크인지 라이브러리인지 헷갈릴 수도 있다.

내가 지금 작성하고 있는 코드가 근간이 되는 언어에서 기반이 된건지 아니면 프레임워크나 라이브러리가 기반이 되는지 잘 보아야한다.

e.g. React와 Vue.js에서 반복문을 쓰는 경우

// React의 경우
// 반복문의 구현자체는 자바스크립트의 반복문을 사용하는 것이다.
// map이 아니더라도 for-in, for-of, for 다양하게 사용해서 구현 가능하다.
// map 사용
<div id="list-rendering">
<ol>
{todos.map((todo)=> {
return (
<li key={todo.id} >{todo.text}</li>
)
})}
</ol>
</div>
// Vue의 경우
// 반드시 vue 에서 정한 규칙에 따라 반복문을 구현해야한다.
<div id="list-rendering">
<ol>
<li v-for="todo in todos">
{{ todo.text }}
</li>
</ol>
</div>

피드백은 언제나 환영입니다.

--

--