require exports

✒️ 2025-05-26 14:19 내용 수정


require과 exports로 모듈 사용


module wrapper

(function(exports, require, module, __filename, __dirname) {
	// module 코드
});
모듈 스코프 설명
__dirname 현재 module의 디렉터리 이름
__filename 현재 module의 이름
exports module.exports의 shortcut
module 현재 module
require(id) module, JSON, 로컬 파일을 가져올 때 사용

require


exports

module.exports.test = 'exports test'; // 해당 값이 required로부터 export됨
exports = {test : 'exports test'}; // 해당 모듈에서만 사용 가능하고 export 되지 않음(module.exports 바인딩 x)

// module.exports에 새 객체 할당 시 exports에도 같이 재할당하기
module.exports = exports = 'new test';

1. 상수와 변수 내보내고 사용하기

  1. exports : module.js 파일에서 상수와 변수를 만들고 내보낸다.
    • module_test.js 이름의 파일을 생성하고 작성
// 상수
const PI = 3.14;
// 변수
let namePI = '원주율';
// exports - 1번 방법
module.exports = {
    PI : PI,
    namePI : namePI
}

// 위 표기를 더 간단하게 작성
module.exports = {
    PI, namePI
}
// exports - 2번 방법
exports.PI = PI;
exports.namePI = namePI;
// exports - 3번 방법
exports.PI = 3.14;
exports.namePI = '원주율';
  1. require : module_test.js 파일에서 module 파일을 가져와서 사용한다.
// 모듈 가져와서 사용하기
let calc = require('./module_test'); // ./module_test.js 확장자 생략 가능

console.log(calc.PI);
console.log(calc.namePI);

-0--

2. 함수 내보내고 사용하기

  1. exports로 내보내기
    • module_test.js 이름의 파일을 생성하고 작성
    • export 방법은 export와 module.export의 재할당으로 인한 언바운드를 고려해서 선택한다.
// 함수
function plus(a, b) {
    return (a + b);
}

function minus(a, b) {
    return (a - b);
}

function multiple(a, b) {
    return (a * b);
}

function divide(a, b) {
    return (a / b);
}

// exports ---------------------------
// exports 1번 방법
module.exports = {
    plus, minus, multiple, divide
}

// exports 2번 방법
exports.plus = plus;
exports.minus = minus;
exports.multiple = multiple;
exports.divide = divide;
  1. require로 가져오기 : module_test.js 파일에서 module 파일을 가져와서 사용한다.
let calc = require('./module_test'); // module_test.js

console.log(calc.plus(10, 20));
console.log(calc.minus(30, 24));
console.log(calc.multiple(5, 7));
console.log(calc.divide(8, 3));

3. 객체 내보내고 사용하기

  1. exports로 내보내기
    • module_test.js 이름의 파일을 생성하고 작성
    • export 방법은 export와 module.export의 재할당으로 인한 언바운드를 고려해서 선택한다.
let test = {
    date : '2024-02-02',
    type : ['test', 'test2'],
    printTypes() {
        for(let i of this.type) {
            console.log(i);
        }
    }
}

// exports ---------------------------
// exports 1번 방법
module.exports = test;

// exports 2번 방법
exports.test = test;
  1. require로 가져오기 : module_test.js 파일에서 module 파일을 가져와서 사용한다.
let calc = require('./module_test'); // module_test.js

console.log(calc.PI);
console.log(calc.academy);
console.log(calc.test);
calc.test.printTypes();
let calc = {
    plus : (a, b) => a + b,
    minus : (a, b) => a - b,
    multiple : (a, b) => a * b,
    divide : (a, b) => a / b
}

module.exports = calc;

// exports 3번 방식과 함수 표현식으로 작성하면
// 아래처럼도 가능하다.

exports.calc = {
    plus : (a, b) => a + b,
    minus : (a, b) => a - b,
    multiple : (a, b) => a * b,
    divide : (a, b) => a / b
}
let math = require('./module_test'); // module_test.js

console.log(math.calc.plus(1,1));
console.log(math.calc.minus(10, 6));
console.log(math.calc.multiple(2, 7));
console.log(math.calc.divide(9, 4));