본격적으로 노드를 공부하기 전에 먼저 모듈에 대해 알아봅시다.
모듈을 한마디로 정의하자면 파일입니다. 더 정확히 이야기하자면 여러분이 작업중이 파일에서 특정한 기능을 수행하기 위해 불러오는 파일이죠.
예를 들어 여러분은 파이썬에서 math, turtle과 같은 모듈들을 import 했던 것입니다.
NodeJS에서 모듈의 종류는 크게 3가지로 나뉩니다.
1. NodeJs가 기본적으로 주는 모듈
nodeJs가 기본적으로 내장하고 있는 모듈들을 의미합니다. 파이썬을 따지면 pip install하지 않고, javascript로 따지면 npm install하지 않고도 import 할 수 있는 모듈들이죠.
2. Third Party 모듈
영어가 나왔다고 어려운 내용이 아닙니다. 그냥 우리가 따로 설치해서 사용해야 되는 외부 모듈을 가리킵니다. 파이썬으로 따지면 pip install해서 사용해야 하는, javascript로 따지면 npm install해야 사용할 수 있는 모듈들을 의미하죠.
3. 사용자 정의 모듈
여러분이 export하고 import하는 파일들을 가리킵니다. 여러분의 폴더에 저장되어 있는 다른 파일들이죠.
NodeJs에서는 위 3가지 모듈을 모두 같은 방식으로 import 할 수 있습니다. 모듈의 구분은 NodeJs가 알아서 해줍니다.
1 import
NodeJs에서는 고전적인 모듈 import 방법을 사용합니다. require를 사용하죠. 옆에 주석으로 걸어둔 부분이 우리가 익히 하는 보통의 모듈 사용 방법이죠.
사실 NodeJs에서도 주석 친 구문을 활용할 수 있습니다.
package.json의 "type":"module"을 써주시면 됩니다. 하지만 예전의 버전과 호환 문제로 잘 사용하지는 않습니다.
2 export
다음과 같이 wantToExport와 sum이라는 함수를 export했습니다.
wantToExport와 sum이 존재하는 wannaexport라는 파일을 import했습니다. require()의 괄호 안의 내용은 wannaexport라는 파일의 경로입니다.
{
wantToExport:wantToExport,
sum:sum,
}
다음과 같은 파일로 불러온 거기 때문에 위와 같이 . 으로 접근이 가능한 것입니다.
그렇기에 Object Destructing을 사용해서 아래와 같이도 표현이 가능합니다.
const {wantToExport, sum} = require("./wannaexport")
Object Destructing에 익숙하지 않다면 그냥 이런 식으로 함수(또는 클래스든 변수든)들을 import한다고 이해하시면 되겠습니다.