NodeJS
JS로 소프트웨어 부품 만들기...모듈
개발자doc
2024. 6. 3. 22:02
목차
1. NodeJS의 모듈
2. 라이브러리와 차이
3. 모듈 사용하기
1. NodeJS의 모듈
자바 스크립트를 브라우저가 아닌 환경에서 동작시키기 위해 실행 프로그램이 필요하다. 그것이 nodejs이고 node에서 각각의 js 파일은 모듈로서 동작한다. 그렇다면 모듈은 뭘까?
- 독립적인 기능을 하는 함수, 변수, 클래스 등의 모음
위의 내용을 보면 유사한 의미를 가진 "라이브러리"라는 단어가 생각난다. 이 둘의 차이는 나중에 알아보도록 하자.
1 ) 특징
- 독립적인 스코프
기존 브라우저에서는 전역에서 같은 이름의 변수를 const, let 키워드를 사용하여 선언했다면 에러가 발생한다. 하지만 각각의 모듈은 최상위 스코프에서 선언하더라도 스코프가 달라 에러를 발생시키지 않는다.
- 모듈 캐싱
이전에 한 번 불러온 모듈은 다시 로드시키지 않고 캐시에 저장하여 좀 더 빠르게 접근할 수 있다.
- 재사용과 유지보수
각각의 모듈은 한번 만들어 놓으면 다시 작성할 필요없이 필요한 곳에서 로드하여 사용하면 된다. 따라서 여러 곳에서 사용이 가능하며 문제가 생겨도 해당 모듈만 조치하면 되기 때문에 유지보수에도 좋다.
- 테스트 용이성
모듈은 독립적인 단위로 존재하기에 필요한 기능에 대해 테스트는 하나의 모듈만 실시하므로 단위테스트로 기능을 검증하는데 용이하다.
2. 라이브러리와 차이
이런 모듈은 특정 기능들을 모아놓은 라이브러리와 비슷해보인다. 그냥 이름만 다른 것일까? 무슨 차이가 있는지 알아보도록 하자.
라이브러리 | 모듈 | |
범위 | 여러 모듈을 포함, 다양한 관련 기능 | 개별적 단위로 특정 기능 및 데이터 |
사용방법 | npm을 통해 라이브러이 API사용 | require or import로 개별 파일 로드 |
3. 모듈 사용하기
//모듈 불러오기
const 변수명 = require("묘듈경로")//js확장자는 생략가능
//ex)
//A.js
const PersonClass = require("./B");
const person = new Person("홍길동", 20)
console.log(person)
//B.js
class Person{
constructor(name, age){
this.name = name;
this.age = age;
}
}
modeule.export = Person;
/*
A.js 실행결과
Person { name: '홍길동', age: 20 }
*/
모듈은 module.export를 키워드를 사용하여 외부에서 코드를 사용할 수 있게 하고 모듈을 사용하는 또 다른 모듈은 require키워드를 사용하여 모듈을 가져와 필요한 코드를 실행한다.
외부로 export되는 코드는 객체형태로 외부 코드에서 호출되어 사용된다.