본문 바로가기
코딩/군 장병 AI·SW 역량강화 교육

[군 장병 AI/SW 교육] NPM과 모듈5 / Express.js 기초 1

by 나는준이 2023. 12. 3.
반응형

 

군 장병 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. 여러번 사용할 모듈은 함수형으로 작성

반응형