노마드코더 유튜브를 참고한 글입니다.
프레임워크와 라이브러리 모두 누군가 미리 작성해놓은 코드이다.
우리가 코딩(개발)할 때 필요에 의해 가져다 쓰는 코드들이며 프로젝트 제작을 편리하게 해준다.
누가 누구를컨트롤 하는가 !
작성된 코드들의 규칙에 맞게 내가 행동하는가 ? 아니면 내가 작성된 코드들을 컨드롤하는가 ? 를 구분하면 된다.
물론 완벽한 흑/백 논리는 아니라 구분이 미묘한 부분도 존재한다.
프레임워크의 예시에는 Django가 있다.
프레임워크로 일을 할 때는 프레임워크의 규칙을 따라야한다.
어디에 코드를 넣어야하고, 어떤 규칙을 지켜야하는지.. 정해진 대로 하지 않으면 정상적으로 작동하지 않는다.
예를 들어, Django에서 어드민 패널
을 만들려면 무조건 코드를 admin.py
에 작성해야하한다.
URL
을 설정하려면 url.py
에 코드를 작성해야한다.
사용자는 마음대로 변경할 수 없고 정해진 규칙을 꼭 따라야한다. 그렇지 않으면 프레임워크는 정상적으로 작동하지 않으니까 !
라이브러리의 예시에는 Jquery가 있다.
Jquery는 웹사이트에 인터랙티브한 요소를 넣을 수 있다.
내가 웹사이트를 코딩할 때, 내가 필요할 때, 내가 필요한 상황에서 Jquery를 사용해 코딩하는 것이다.
라이브러리는 쉽게 대체가 가능하다.
내가 원하면 Jquery를 다른 라이브러리로 교체할 수 있다.
시작할 때 말 했듯이 완벽한 흑백 논리로 나눌 수 없는 부분도 있다.
대체적으로 프론트엔드 파트의 기술들이 그렇다.
React.JS를 예로 들어보자.
React.JS의 웹페이지에서는 React는 라이브러리라고 정의되어있다. 그리고 React는 규칙, 폴더 구조, 컴포넌트명 같은게 없다.
사용자의 어플리케이션 UI를 빌드할 때 사용자가 React를 부르기 때문에 라이브러리가 맞다.
하지만 React가 사용자의 컴포넌트를 부르고 규칙을 알려주기도 한다. 이 경우엔 리액트를 프레임워크라고 부를 수 있다.
사용자가 컴포넌트를 쓰면 리액트가 그걸 불러와서 스크린에 보여준다.
React를 사용해본 경험이 없고 어떤 기능을 하는지 몰라서 이 부분은 크게 체감은 되지 않았다.
하지만 흑백이 아닌 회색의 영역이 있다는 것은 이해가 된다 !
내가 파이썬을 이용해 웹사이트를 만든다고 해보자.
그러면 나는 Django를 이용해 뼈대를 가져올 것이다.
Django의 정해진 규칙에 따라 웹사이트를 만들겠지?
그리고 코딩을 하면서 추가적인 기능이 필요할 때 다양한 라이브러리를 불러 살을 붙여나갈 것이다.
예를 들면 numpy, pandas, jquery... 만드는 웹 사이트에 따라 필요한 라이브러리는 달라진다. 그리고 사용자에 따라 달라지기도 할 것이다.
프레임워크는 프레임워크의 정해진 규칙을 내가 따르며, 내가 작성한 코드를 프레임워크가 부른다.
라이브러리는 내가 필요로 할 때 라이브러리를 부른다.
누가 주체가 되어 누구를 부르는지를 잘 알고 있으면 될 것 같다.