글 작성자: 망고좋아
반응형

🎯 [Node.js] Node.js 모듈의 작성과 사용

📝 모듈의 기본적인 작성법

// elice.js
const name = "elice";
const age = 5;
const nationality = "korea";

module.exports = {
  name,
  age,
  nationality,
};

const student = require("./elice");
// student 출력값 { name: 'elice', age: 5, nationality: 'korea'}
module.exports = {
  name,
  age,
  nationality,
};

// 변수명으로 export 하는 모듈 작성법
// - 모듈을 object로 만들고, 각 key-value를 지정해서 내보낸다.
exports.name = name;
exports.age = age;
exports.nationality = nationality;
  • 모듈이 load될 때 사용될 값을 module.exports로 내보낸다.

 

📝 함수를 exprot하는 모듈 작성법

// elice.js
const name = "elice";
const age = 5;
const nationality = "korea";

// 모듈을 함수로 만들어서 모듈 사용 시에 값을 정할 수 있게 내보냄
module.exports = (name, age, nationality) => {
  return {
    name,
    age,
    nationality,
  };
};

const student = require('./elice')('elice', 5, 'korea') ;
// student 출력값 { name: 'elice', age: 5, nationality: 'korea'}

 

📝 모듈의 사용 방법

  • require 함수를 통해 모듈을 load 할 수 있다.
  • 의존성 패키지, 직접 작성한 모듈 사용 가능

 

📕 require 동작의 이해

  • require 할 때 모듈 코드가 실행된다.
  • Node.js의 모듈은 첫 require 시에 cache, 두 번 실행하지 않는다.
    • 두 번째는 메모리에 cache된 모듈을 가져다 쓴다.
  • 모듈 코드를 여러 번 실행하기 위해선 함수 모듈로 작성해야 된다.

 

📕 npm 패키지

const dayjs = require('dayjs');

console.log(dayjs());
  • 의존성 패키지들은 require('package-name')로 load 할 수 있다.
  • 패키지를 사용하려면 node_modules에 내려받아져 있어야 한다!

 

📕 직접 작성한 모듈

const myModule = require("./my-module");
console.log(myModule);
  • 직접 작성한 모듈은 현재 파일과의 상대 디렉터리로 load할 수 있다.
  • my-module이 .js 파일인 경우 해당 파일 load된다.
  • my-module이 디렉터리인 경우 자동으로 my-module/index.js 파일 load된다. 그래서 './my_module만 적어줘도 자동적으로 index.js파일을 load한다.

 

📕 함수형 모듈

const myFunctionModule = require("./my-function-module");
console.log(myFunctionModule(name, age, nationality));
  • 함수형 모듈은 load한 경우 모듈이 바로 실행되지 않는다.
  • 필요한 시점에 load된 함수를 실행하여 모듈을 사용할 수 있다.

 

📕 json 파일

// my-data.json 을 가지고 있음
const myData = require("./my-data");
console.log(myData);
  • require로 json 파일도 load 가능하다.
  • object로 자동파싱 된다.

 

🏷 요약

  • module.exports를 사용하여 모듈을 작성할 수 있다.
  • require를 사용하여 의존성 패키지, 모듈, json 파일을 사용할 수 있다.
  • 모듈은 첫 require 시에만 실행하고 cache 되므로 여러 번 실행할 모듈은 함수형으로 작성해야 함
반응형