모듈 VS 라이브러리 VS 프레임워크
프로그램은 작고 단순한 것에서 크고 복잡한 것으로 진화한다.
그 과정에서 코드의 재활용과 유지보수를 쉽게 하기 위해 다양한 기법들이 사용된다.
그 중 하나가 코드를 여러 개의 파일로 분리하는 것이며, 장점은 다음과 같다.
(1) 자주 사용되는 코드를 별도의 파일로 만들어 필요할 때마다 사용할 수 있다.
(2) 별도의 파일로 된 코드를 개선하면 이를 사용하고 있는 모든 애플리케이션의 동작이 개선된다.
(3) 로직을 변경할 때, 코드에서 수정이 필요한 부분을 빠르게 찾을 수 있다.
(4) 필요한 로직을 로드해 사용하기 때문에 메모리 낭비를 줄일 수 있다.
(5) 한 번 다운로드 하면 웹 브라우저에 의해 저장되기 때문에 동일한 로직을 로드 할 때 시간과 네트워크 트래픽을 절약할 수 있다. (브라우저에만 해당)
이렇게 분리하는 기법을 공부하다 보면 모듈, 라이브러리, 프레임워크라는 용어들이 등장하는데, 제대로 알고 사용하기 위해 찾아봤다. 🐣🐥
Module
- 별도의 파일로 분리된 독립된 기능을 뜻한다.
(순수한 JavaScript에서는 모듈이라는 개념이 분명하게 존재하지 않는다고 한다.)
JavaScript가 구동되는 호스트 환경에 따라서 서로 다른 모듈화 방법이 제공된다.
호스트 환경?
: JavaScript가 구동되는 환경을 의미한다. 예를 들어, Node.js는 JavaScript의 문법을 따르지만 이 언어가 구동되는 환경은 브라우저가 아니라 시스템을 제어하는 서버 측 환경이다.
- 모듈을 만들면 다른 파일에서 모듈을 불러와 사용할 수 있다.
Node.js에서는 CommonJs 표준 스펙을 따르며, exports 전역 객체를 사용한다.
방법 (1) 또는 (2)를 사용해서 module.js를 만들고, main.js에서 다음과 같이 불러와 사용하면 된다.
Library
- 라이브러리는 모듈과 비슷한(거의 같은) 개념이다.
- 생활 코딩에서 설명하는 차이점은 다음과 같다.
모듈이 프로그램을 구성하는 작은 부품의 느낌이라면, 라이브러리는 자주 사용 되는 로직을 잘 정리한 집합 느낌이다.
- 위키백과에서는 라이브러리를 다음과 같이 설명하고 있다.
컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임으로 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있다.
Framework
- 복잡한 문제를 해결하거나 서술하는 데에 사용 되는 기본 개념 구조, 즉 뼈대이다.
- 애플리케이션 개발에 바탕이 되는 템플릿과 같은 역할을 하는 클래스들과 인터페이스의 집합으로 애플리케이션을 구축할 때 공통적인 부분을 제공한다.
이렇게 이해 했다.
로봇을 만드는 공장(Framework)이 있다.
이 공장 안에는 로봇의 머리, 몸통, 팔, 다리를 만들 수 있는 파트(Library)가 있다.
로봇의 머리를 만드는 파트에는 눈, 코, 입을 생산하는 기계(Module) 3개가 있다. (Library > Module)
로봇의 몸통을 만드는 파트에는 기계가 1개 있다. (Library = Module)
잘못된 부분이 있다면 피드백 plz..🙏🏻
📚 참고
https://brownbears.tistory.com/437
https://ko.wikipedia.org/wiki/라이브러리_(컴퓨팅)
https://opentutorials.org/course/743/4750
https://www.it-swarm.dev/ko/python/파이썬에서-모듈과-라이브러리의-차이점은-무엇입니까/1041805782/
https://ko.wikipedia.org/wiki/소프트웨어_프레임워크
https://m.blog.naver.com/manddonara/119738492