카테고리 없음

라이브러리 vs 프레임워크

해말그미 2023. 4. 1. 00:29

🎵 공통점

라이브러리와 프레임워크는 둘 다 다른 누군가가 쓴 코드들이다.

이걸 써서 우리는 소프트웨어를 편리, 윤택하게 개발할 수 있다.`

(편리, 생산성 향상!)

 

🎵 라이브러리

👉내가 만들고 있는 프로그램에 사용할 부품을 가져오는 것.

즉, 전체적인 틀이 아닌 하나의 기능만을 도구처럼 제공

 

👉자바스크립트의 라이브러리에 제이쿼리가 있다.

내가 웹사이트를 코딩하고 있는데 내가 필요할때 부르는 거임 => 이게 라이브러리

라이브러리는 쉽게 대체될 수 있다.

시간절약하려고 쓰는 거니까 내가 원하면 제이쿼리를 딴걸로 대체해도 되고 프로젝트도 망가지거나 하지 않음

 

🎵 프레임워크

👉게임, 웹, 채팅 등 만들고자 하는 것이 무엇이냐에 따라 그것을 만들 때 언제나 공통적인 것이 있고

기획의도에 따라 달라지는 부분도 있을 것이다.

그 중 공통적인 부분은 프레임워크라는 것이 만들어 놓고 만들고자 하는 것의 기능, 개성에 따라 달라지는 부분만 수정하는 것을 통해 완성시켜주는 거의 반제품과 같은 것!

 

👉프레임워크는 부르는 것은 아님 프레임워크가 너를 부르는 것임

프레임워크로 일을 할때는 프레임워크의 규칙을 따라야한다. => 내가 코드의 규칙을 정하는 입장이 아님

프레임 워크가 어디에 코드를 넣어야하는지 등등을 알려줌

어디에 템플릿을 넣고, 컨트롤러를 넣고, 뷰를 넣고

규칙에 따라하면 정상작동함. 내가 컨트롤하는 건없고 규칙을 따라갈뿐

프레임워크의 대표적인 것은 장고 - 잘 작동하기를 바란다면 모든 규칙을 잘 준수해야 한다.

 

예를 들어 장고에서 어드민 패널을 만들고 싶다면, 무조건 코드를 admin.py에 써야한다.

만약 url을 바꾸고 싶다면? => 반드시 파일명 url.py를 가야한다.

장고가 시작할 때 url.py/ admin.py를 읽음

이걸 우리가 바꿀 순 없음 . 이걸 잘 준수해야 어드민 패널.url이 잘 작동하는 걸 볼 수 있지

여기서 내가 장고를 부르는 건 없음 장고 문서를 보면서 장고 규칙에 따라 코드들을 잘 넣어두면

장고가 그걸 실행시키는 것

 

🎵 차이점

👉즉, 라이브러리는 소프트웨어를 만드는 내가 라이브러리를 당겨 와서 쓰는 느낌이라면

프레임워크는 프레임워크 안에 우리가 들어가서 작업하는 느낌이 있다.

 

👉차이점은 누가 누구를 컨트롤하는가??

너가 코드를 컨트롤 하는건가? 모든 결정을 다 내리고? => 라이브러리

아니면 누군가 정해진 규칙을 따라하고 있는가? => 프레임워크

너가 코드를 컨트롤 하는건지 vs 누군가의 규칙을 따라 코딩하는 건지에 따라 차이점이 나온다.


🎶 자바스크립트의 라이브러리 예 => jquery

자바스크립트 중 제이쿼리라는 라이브러리는

$(‘.hello’).css(‘color’, ‘red’) => css 바꿀래~

$(‘.hello’).addclass(‘show’) => class 넣고 싶을 때 

이런 식으로 쓸 수 있다!

저 css라는 함수를 쓰면 저 함수가 내부적으로 이런 작업을 대신 처리해주고 있는 것이다.

 

직접 코딩했던 것보다 생산성이 훨싼 높아지고, 직관적이며 우리가 알고 있던 지식이 있어야 쓸 수 있다.


Framework와 Library의 차이 - Inversion Of Control

 

Framework와 Library의 차이는 Flow(흐름)에 대한 제어 권한이 어디에 있느냐의 차이입니다. 프레임워크는 전체적인 흐름을 자체적으로 가지고 있으며, 프로그래머가 그 안에 필요한 코드를 작성하는 반면에 라이브러리는 사용자가 흐름에 대해 제어를 하며 필요한 상황에 가져다 쓰는 것입니다. 

이 내용을 한 문장으로 정리하자면 프레임워크에는 제어의 역전(Inversion Of Control)이 적용되어있다는 것입니다.

 

제어의 역전(Inversion Of Control)이란 어떠한 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 클라이언트 코드가 신경서야 할 것을 줄이는 전략입니다. 일반적으로 우리는 프로젝트를 생성하고 Main함수를 만들어서 시작지점을 형성합니다. 그리고 Main 함수에서 프로그램의 흐름을 정하는 것은 프로그래머의 몫으로 우리가 어떠한 순서를 부여하느냐에 따라서 흐름을 제어하는 것이 일반적인 사고입니다. 

하지만 여기서 프레임워크는 일반적인 사고와 반대되는 모습을 보여주는데 실행의 흐름을 프레임워크 자체가 가지고 있어서 우리의 코드를 프레임워크안에 넣어서 개발을 진행해야 합니다. 실제로 Maven과 같은 프레임워크의 프로젝트를 생성해보면 어느정도 뼈대를 만들어서 그 안에 필요에 따라 우리의 코드를 넣습니다. 일반적으로 프로그래머가 가지고 있어야하는 제어의 권한을 프레임워크에게 주었기 때문에 우리는 이를 제어의 역전이라고 말합니다.

 

이제 차이점을 명확히 알겠나요? 여기서 제일 처음 보여주었던 그림을 다시 보여주면서 이번 포스팅을 마무리하겠습니다!

리액트 ui 만드는 기능만을 제공하기 때문에 라이브러리라고 할 수 있다.

라이브러리인지 프레임워크인지 논란이 많지만 공식문서에도 라이브러리라고 나와있기 때문에 라이브러리라고 생각

 

여기서 중요한 것은 이게 라이브러리인지 프레임워크인지 규정하는게 중요한가?

하지만 적어도 우리는 개념상으로는 이해하고 있어야 한다.

차이점이 무엇인지~