군 장병 AI/SW 교육 / 엘리스 코딩 / [초급] 웹 개발 프로젝트 / Express.js 기초 1 / NPM과 모듈의 노트필기입니다
-- NPM과 모듈 5 --
목차
1. NPM 이해하기
2. NPM 사용해 보기
3. NPX
4. Node.js의 모듈
5. 모듈의 작성과 사용 <==
가. 모듈의 작성
나. 모듈의 사용
가. 모듈의 작성
1) 기본 작성법
아래에 elice.js에서 name, age, nationality라는 세가지 변수가 선언되어 있다.
module.exports로 elice라는 파일이 불러와질때 어떤 것을 반환할지 정할 수 있다.
아래의 경우에는 name, age, nationality라는 객체를 반환함을 알 수 있다.
다른 곳에서 require라는 키워드를 사용하여 elice.js 안 module.exports에 있던 객체들이 student에 들어오게 된다.
// elice.js
const name = 'elice';
const age = 5;
const nationality = 'korea';
module.exports = {
name,
age,
nationality,
};
// 다른 파일
cosnt student = require('./elice');
// student의 출력값 {name: 'elice', age: 5, nationality: 'korea'}
//코드 출처 : 엘리스 코딩
2) 변수명으로 export하는 모듈 작성법
exports라는 키워드를 활용하여 key1, key2, key3를 마치 property처럼 생각해서 elice 모듈을 불러 보낼 수도 있다.
모듈을 object로 만들고, 각 key - value를 지정해서 내보내는 것이다.
아래 예시에서는 key1, key2, key3가 key가 되고 name, age, nationality가 value가 된다.
// elice.js
const name = 'elice';
const age = 5;
const nationality = 'korea';
exports.key1 = name;
exports.key2 = age;
exports.key3 = nationality;
// 다른 파일
cosnt student = require('./elice');
// student의 출력값 {name: 'elice', age: 5, nationality: 'korea'}
//코드 출처 : 엘리스 코딩
3) 함수를 export하는 모듈 작성법
module.exports에 함수도 넣을 수 있다. 이때는 arrow 함수를 사용한다.
또, require 할때 매개변수의 값을 채워줘야 한다.
// elice.js
module.exports = (name, age, nationality) => {
return {
name,
age,
nationality,
}
}
// 다른 파일
cosnt student = require('./elice')('elice', 5, 'korea'); // 매개변수를 위한 정보를 채워주어야 함.
// student의 출력값 {name: 'elice', age: 5, nationality: 'korea'}
//코드 출처 : 엘리스 코딩
나. 모듈의 사용
1) 모듈의 사용 방법
require 함수를 통해 모듈을 load 할 수 있다.
*C의 include, Java의 import와 유사
의존성 패키지, npm에서 다운한 것, 직접 작성한 모듈 등 모두 사용 가능하다.
2) require 동작의 이해
require 할 때 모듈 코드가 실행됨.
Node.js의 모듈은 첫 require 시 cache 즉, 저장됨. (두번 실행되진 않음)
따라서 모듈 코드를 여러 번 실행하기 위해선 함수 모듈로 작성해줘야 한다.
3) npm 패키지 사용
의존성 패키지는 require('package-name')으로 load 가능.
-> require의 괄호 안에 npm 패키지 이름 적어주기
패키지를 사용하려면 모듈 설치가 선행되야 함.
const dayjs = require('dayjs');
console.log(dayjs());
// 코드 출처 : 엘리스 코딩
4) 직접 작성한 모듈 사용
require의 괄호 안에 모듈의 위치를 적어주어야 한다.
여기서 2가지 케이스로 나뉜다.
가) my-module이 .js 파일일 경우
해당 파일을 load한다. 따라서 뒤에 .js를 붙이지 않아도 된다.
나) my-module이 디렉터리인 경우
my-module 안의 index.js 파일을 load한다.
const myModule = require('./my-module');
console.log(myModule);
// 코드 출처 : 엘리스 코딩
5) 함수형 모듈 사용
모듈을 load한다고 해서 모듈이 실행되지 않는다.
필요한 시점에 load된 함수를 직접 실행하여 모듈을 사용할 수 있다.
함수도 직접 작성한 모듈이므로 require 괄호 안에 위치를 적어주자.
const myFuntionModule = require('./my-funtion-module');
console.log(myFuntionModule(name, age, nationality)); // 함수 호출하여 모듈 사용
// 코드 출처 : 엘리스 코딩
6) json 파일 사용
require로 json 파일도 load 가능하다. 이때 텍스트로 된 json파일이 자동으로 object로 파싱된다.
*json 파일 : key와 value들을 담고 있는 파일
//my-data.json을 가지고 있음.
const myData = require('./my-data');
console.log(myData);
// 코드 출처 : 엘리스 코딩
**정리**
1. module.exports를 사용하여 모듈 작성
2. require를 사용하여 의존성 패키지, 모듈, json 파일 사용
3. 여러번 사용할 모듈은 함수형으로 작성
'코딩 > 군 장병 AI·SW 역량강화 교육' 카테고리의 다른 글
[군 장병 AI/SW 교육] 웹과 Express.js 2 / Express.js 기초 1 (1) | 2023.12.17 |
---|---|
[군 장병 AI/SW 교육] 웹과 Express.js 1 / Express.js 기초 1 (1) | 2023.12.10 |
[군 장병 AI/SW 교육] NPM과 모듈4 / Express.js 기초 1 (3) | 2023.12.03 |
[군 장병 AI/SW 교육] NPM과 모듈3 / Express.js 기초 1 (1) | 2023.12.03 |
[군 장병 AI/SW 교육] NPM과 모듈2 / Express.js 기초 1 (0) | 2023.12.01 |