Today Yewon Learned

[Node.js] 모듈(module) 본문

javascript/Node.js

[Node.js] 모듈(module)

데브워니 2021. 11. 16. 11:56

모듈(Module)

- 전체를 이루는 부품 하나하나

- JavaScript 파일 하나

- 프로그램 : 모듈들의 모임

 

 

모듈의 핵심 Module Load

- 하나의 모듈에서 다른 모듈의 기능을 가져와 사용하는 것

- Module Load 두 가지 방법 존재

  1. 공개하고 싶은 것들을 하나씩 exports로 공개

  2. 공개하고 싶은 것들을 모아서 하나의 객체로 만들고 module.exports로 객체를 통째로 공개

 

math-tools.js 모듈 추가

function add(a, b) {
  return a + b;
}

exports.add = add;

export '내보내다'

- 모듈 내부의 것들을 외부로 공개해야 외부에서 사용 가능

- exports.add = add라는 함수를 모듈 외부에서도 add라는 이름으로 공개한다는 의미

 

 main.js 모듈 추가

let m = require('./math-tools.js');

console.log(m.plus(1, 2));

require '요구하다'

- 모듈을 load하는 함수

 main.js 모듈과 math_tools.js 모듈이 같은 디렉토리 안에 있는 경우

let m = require('./math-tools.js');

./ 기호로 main.js 모듈을 기준으로, 현재 디렉토리 안의 math_tools.js 모듈이라는 걸 나타냄

 

 main.js 모듈과 math_tools.js 모듈이 다른 디렉토리 안에 있는 경우

let m = require('../modules/math-tools.js');

..은 부모 디렉토리를 나타내는 상대 경로

 

 

모듈 안에 있는 것들을 하나씩 공개

여러개의 함수들을 각각 외부에 공개하기 위해 모두 exports 하지않고, 공개하고 싶은 것을 하나의 객체로 만들고,

그 객체를 공개할 수 있음

 

하나의 객체로 모아서 외부에 공개하기

모듈 안에 있는 것들을 하나씩 공개 → exports 키워드 사용

공개하고 싶은 것들을 모은 객체를 외부에 공개 → module.exports 키워드 사용

 

 

모듈의 종류

1. 내가 직접 만든 모듈

2. 이미 만들어져 있는 모듈

- 코어 모듈 : Node 실행파일 안에 이미 포함되어있는 모듈 (Node 설치 후 바로 사용 가능)

- 서드파티 모듈 : 여러 개발자, 회사들이 만들어서 인터넷 공개 저장소에서 제공하는 모듈

 

 

■ 코어 모듈

- 경로 표시 필요 없음

 

코어 모듈 예시)

- fs : 'file system'의 줄임말로, 파일이나 디렉토리에 관한 작업을 할 때 꼭 필요한 모듈

- readdirSync() : 특정 디렉토리 안에 있는 파일 목록들을 배열 형식으로 리턴하는 함수

- writeFileSync() : 'new'라는 파일에(없으면 생성) 'Hello Node.js!'라는 내용을 쓰는 함수

 

 

Node.js와 브라우저의 차이

- API (Application Programming Interface) : 어떤 플랫폼이나 실행환경 등에서 제공하는 인터페이스 , 특정 환경에서 자유롭게 가져다 쓸 수 있는 함수나 객체 등을 의미

- 엔진 종류가 다름

Node.js 브라우저
시각적 표현 필요 X → UI 관련 API X 시각적 표현 필요 O → UI 관련 API O
window, document 객체 X window, document 객체 O
컴퓨터 제어 API O - 파일 생성, 컴퓨터 정보 확인 등 컴퓨터 제어 API X
V8 엔진 FireFox - SpiderMonkey 엔진, Edge,Chrome - V8 엔진

 

 

 

 

■ 서드파티(3rd party) 모듈

- 다른 개발자나 회사들이 만들어서 인터넷상의 공개 저장소에서 제공하는 모듈

- npm : 서드파티 모듈에 관련된 작업을 할 때 필요한 프로그램

 

서드파티 모듈 설치

- npm install 모듈명

- 서드파티 모듈 설치시, 작업하던 디렉토리 안에 package-lock.json파일과 node_modules라는 디렉토리가 생성됨

- package-lock.json : 설치된 서드 파티 모듈에 관한 정보

- node_modules : 실제 서드파티 모듈들이 설치되는 디렉토리

- 모듈 설치시, 모듈의 이름이 파일이 아니라 디렉토리 이름인 것을 확인할 수 있음

 

[참조] : Codeit

Comments