반응형

공통점

둘다 누군가 짜놓은 소스 코드의 뭉치.

우리의 프로젝트를 위해서 가져다가 쓴거임.

우리의 코딩 삶을 윤택하게 하기 위해서 쓰는 거임.

 

라이브러리 (Library)

우리는 핸들(Library)를 이용해서 운전을 한다.

 

누군가가 짜놓은 코드 뭉치 즉, 함수들의 뭉치.

우리는 이 함수들을 이용해서 결과값만 잘 받아서 이용해 먹으면됨. 다른 라이브러리로 쉽게 대체 가능.

자동차로 따지면 타이어라 생각하면됨. 타이어는 교체가능.

(좋은 예시로 JQuery가 있음. 우리가 JQuery를 소환해서 코딩해 나가는거임.)

 

프레임워크 (Framework)

자동차(Framework)에 탑승한 채 운전을 한다.

 

누군가가 짜놓긴 코드 뭉치긴 한데 틀이 존재 그 틀에 탑승한 채 개발에 착수함.

 프레임워크의 규칙을 따라야함. 어디에 템플릿을 넣고, 컨트롤러를 넣고 뷰를 넣고 등등 규칙에 따라서 하면 모든건 정상동작을 함.

자동차로 따지면 자동차라고 생각하면됨. 자동차라는 틀 안에서 우리는 운전함.

(좋은 예시로 장고 프레임워크가 있다. 장고 규칙을 따라야 정상동작을 한다)

 

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

 만약 URL을 바꾸고 싶다면? 반드시 파일명을 url.py로 해야한다.. 왜냐면 장고가 시작할때 url.py amdin.py를 읽기때문임. 내가 이걸 바꿀 순 없음. 이건 장고가 갖고있는 규칙임. 이걸 잘 준수해야 어드민 패널, URL이 잘 작동하는 걸 볼 수 있음. 보다시피. 이 시나리오에서는 내가 장고를 부르고 그런거 없음.

 장고 문서를 보면서 장고 규칙에 따라 코드들을 잘 넣어두면. 장고가 그걸 실행시키는 것이니까. 프레임워크라고 하는 것들을 반드시 따라야하는 규칙이 있음.

 

차이점

틀과 규칙, 문서를 따라야하는가?    프레임워크 YES,  라이브러리 NO.

 

궁극적인 차이점.

라이브러리 프레임워크
내가 코드를 컨트롤 할 수 있다. 누군가의 규칙을 따라 코딩을 한다.
소환해서 쓴다. (적게 의존함) 그 틀에 준수해서 개발함 (많이 의존함, 규칙어기면 빌드가 안됨)
교체가 쉬움 교체가 어려움 (장고 프레임워크에서 Spring프레임워크로 교체를?...??)

 

 

Extra)

참고로 리액트는 회색영역임. 라이브러리면서 프레임워크임. 틀이 존재하기도 하고 가져와서 쓰기도 함.

(너의 애플리케이션의 UI를 빌드할 때 리액트를 부르는거야. 이 경우 너가 리액트를 부르는 거지. 너가 부르는 것이니까 리액트는 라이브러리가 되는 것이 맞지. 그리고 리액트는 그런 규칙, 폴더 구조나 컴포넌트명이나 그런게 없음. 하지만 리액트가 우리의 컴포넌트를 부르긴 한다. 그래서 이 경우엔 리액트를 프레임워크로 부를 수 있는 거임. 리액트가 컴포넌트를 부르니까, 규칙을 알려주고 말이지 뭐가 틀리고 뭐가 맞는지를 알 ㅜㅅ 있음. 리액트가 컴포넌트를 부르는거니까 규칙을 알려주고 말이지. 둘의 경계가 뚜렷한건 아님. 넉 ㅏ컴포넌트를 쓰면 리액트가 그걸 불러와서 스크린에 뿌려줌. 그래서 이건 회색영역.)

 

참고자료

노마드코더 : https://www.youtube.com/watch?v=t9ccIykXTCM

반응형