모듈 VS 라이브러리 VS 프레임워크

프로그램은 작고 단순한 것에서 크고 복잡한 것으로 진화한다.
그 과정에서 코드의 재활용과 유지보수를 쉽게 하기 위해 다양한 기법들이 사용된다.
그 중 하나가 코드를 여러 개의 파일로 분리하는 것이며, 장점은 다음과 같다.

(1) 자주 사용되는 코드를 별도의 파일로 만들어 필요할 때마다 사용할 수 있다.
(2) 별도의 파일로 된 코드를 개선하면 이를 사용하고 있는 모든 애플리케이션의 동작이 개선된다.
(3) 로직을 변경할 때, 코드에서 수정이 필요한 부분을 빠르게 찾을 수 있다.
(4) 필요한 로직을 로드해 사용하기 때문에 메모리 낭비를 줄일 수 있다.
(5) 한 번 다운로드 하면 웹 브라우저에 의해 저장되기 때문에 동일한 로직을 로드 할 때 시간과 네트워크 트래픽을 절약할 수 있다. (브라우저에만 해당)


이렇게 분리하는 기법을 공부하다 보면 모듈, 라이브러리, 프레임워크라는 용어들이 등장하는데, 제대로 알고 사용하기 위해 찾아봤다. 🐣🐥


Module

호스트 환경?
: JavaScript가 구동되는 환경을 의미한다. 예를 들어, Node.js는 JavaScript의 문법을 따르지만 이 언어가 구동되는 환경은 브라우저가 아니라 시스템을 제어하는 서버 측 환경이다.

// module.js (1)
// export 사용

exports.add = function(a, b){
    return a + b;
};
exports.multiply = function(a. b){
    return a * b;
};
// module.js (2)
// module.exports 사용해서 객체 직접 할당

var calc = {};

calc.add = function(a, b){
    return a + b;
};
calc.multiply = function(a, b){
    return a * b;
};

module.exports = calc;

방법 (1) 또는 (2)를 사용해서 module.js를 만들고, main.js에서 다음과 같이 불러와 사용하면 된다.

// main.js
// 모듈을 사용할 때, 절대 경로 또는 상대 경로를 정확하게 입력해야 함

//var module1 = require('../test/module.js'); //가능
var module1 = require('./module.js');
console.log(module1.add(3,4));
console.log(module1.multiply(3,4));

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

Joie-Kim

Joie-Kim

배운 것을 기록하는 습관! ✍️

comments powered by Disqus
rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin pinterest medium vimeo stackoverflow reddit quora quora