Node JS에서 모듈을 사용한다라는 것은 무엇일까?
우선 모듈은 nodeJS 공식문서에서 확인 할 수 있습니다. 공식문서에서 읽은 저의 생각은 아래와 같이 정리해 보았습니다.
- 각 파일이 모듈이 되어 필요할 때, 선언하여 사용하는 것
- 전체를 만들기 위해 하나의 부품
- 특정한 기능을 하는 함수나 변수들의 집합 (NodeJS 교과서)
- test 라는 파일 이름을 가지고 안에는 fisrt 라는 데이터가 있는 txt파일을 만들어 보고 싶다.
실행할 js 파일을 생성하여 require 라는 함수를 사용합니다.
여기서 왜 뜬금없이 Require 가 왜 나오지? 라는 의문이 들 수 있습니다. (저만 그럴 수 있음...)
공식문서에서 내장 모듈에 접근하여 사용할 때, require 함수를 사용해라고 하네요.
Require 함수는 파일 시스템 내장 모듈에 접근을 하여 변수 fs에 넣습니다. (공식 문서 예시)
그리고 파일시스템 안에 있는 writeFileSync 함수를 이용하여 파일이름과 파일안에 들어갈 내용을 적습니다.
그리고 해당 js파일을 node로 실행합니다.
- node app.js (저 같은 경우 app.js라고 이름을 넣고 실행하였습니다.)
그러면 아래와 같은 결과가 나옵니다.
text 파일안에 first라는 문자가 들어가 있는 것을 알 수 있습니다.
노드에서 제공되는 모듈은 버전마다 차이가 있지만, 안정적이고 유용한 기능을 지닌 모듈을 아래와 같이 남겨보도록 하겠습니다.
- OS: 운영체제의 정보를 가져올 수 있는 모듈
- Path: 폴더와 파일의 경로를 쉽게 조작할 수 있도록 도와주는 모듈
- url: 인터넷 주소를 쉽게 조작해 주는 모듈
- querystring: 기존 노드의 url 사용시, search 부분을 쉽게 사용할 수 있도록 객체로 만드는 모듈
- crypto: 다양한 방식으로 암호화를 도와주는 모듈
- util: 각종 편의 기능을 모아둔 모듈
내장 모듈을 불러와서 사용할 수 있지만 내가 만든 파일을 불러올 수 있습니다. 그렇다면 어떻게 될까? 라고 생각이 들었다면... 아래의 예시를 확인바랍니다.
myFile 이라는 js 파일에 console.log('myFile1')을 만든다. (같은 폴더)
myFile2 이라는 js 파일에 console.log('myFile2')을 만든다. (다른 폴더)
app.js 파일에 두 파일을 require를 이용하여 불러와서 사용한다.
같은 경로에 있는 myFile.js를 이용하기 위해 ./를 사용하였고, 같은 폴더가 아닌 상위 폴더에 있는 파일을 불러오기 위해 ../을 이용하였다. 즉, 상대경로를 이용하여 파일을 찾아내어 불러오는 방법입니다.
그러면 아래와 같은 결과가 나옵니다.
지금까지 console.log를 넘기는데는 아무 문제가 없었지만, 만약 변수를 넘겨야 하는 상황이 생겼을 경우도 생길 것입니다. 그래서 아래와 같이 예시를 만들어 보았습니다.
- myFile3.js라는 파일 안에 'SongPro'라는 문자를 fmailyName이라는 변수와 console.log를 넣습니다.
- app.js 파일에 require을 이용하여 불러와서 console.log에 해당 변수를 넣어 console에 나오게 합니다.
이렇게 실행을 하면 아래와 같은 아래와 같은 에러가 나오게 됩니다.
- ReferenceError: familyName is not defined
- module.exports
- module.exports = familyName
그렇게 되면 myFile3.js에 있는 변수를 다른 곳에서도 사용할 수 있게 됩니다.
사용방법은 app.js에 변수를 넣어서 그 변수를 불러오는 게 가장 좋은 것 같습니다.
결과는 아래와 같이 나오게 됩니다.
우리는 변수 뿐만이 아니라 함수도 넘길 수 있습니다. 함수로 넘기게 되는 예시를 아래와 같이 준비하였습니다.
- notes.js 를 생성하여 getNotes라는 함수에 return을 이용하여 문자를 반환
- utils.js를 생성하여 add라는 함수에 2개의 인자를 받아 더하는 함수를 생성하여 변수에 넣음
- note1.js를 생성하여 함수에 문자열이 리턴되도록 하여 변수에 넣음
- app.js를 생성하여 위의 3개의 파일을 갖고와서 사용
1. notes.js
2. utils.js
3. note1.js
4. app.js
테스트 용이기 때문에 파일이름부터 변수이름까지 계속 변경해 보면서 테스트를 해 보았습니다.
그 결과 app.js에서 module.exports.에서 사용한 변수가 사용되지 않아도 된다는 것을 발견했습니다. 하지만, 왠지 같은 이름으로 사용하면 가독성에 좋을 것 같습니다.
결과는 아래와 같이 잘 나왔습니다.
'nodeJS' 카테고리의 다른 글
[NodeJS] Body-Parser 사용하여 클라이언트와 서버 통신 및 DB 저장 (0) | 2020.05.14 |
---|---|
[NodeJs] 몽고 DB 연결을 위한 몽구스(Mongoose) 설치 및 이용 (0) | 2020.05.13 |
[NodeJS] 백엔드 NodeJS 초기 셋팅은 이렇게 해보자! (0) | 2020.05.11 |
[NodeJs] Express 사용하여 구축하기 -01 (0) | 2019.12.04 |
[Node 설치] NVM 설치 및 Node 버전 관리 (Windows) (0) | 2019.11.18 |