Node/노드 기능

모듈로 만들기

webmaster 2022. 7. 23. 14:30
728x90

모듈과 프로그램

  • 노드는 자바스크립트 코드를 모듈로 만들 수 있음
    • 모듈: 특정한 기능을 하는 함수나 변수들의 집합
    • 모듈로 만들면 여러 프로그램에서 재사용 가능

같은 폴더 내에 var.js, func.js, index.js 만들기

var.js

const odd = '홀수입니다';
const even = '짝수입니다';

module.exports = { //파일에서 한번만 넘겨줄 수 있다.
    odd, //키와 값변수가 같아서 생략 odd : odd
    even
};

/*
export default {
    odd,
    even
}
*/

func.js

//const value = require('./var');
const { odd, even } = require('./var'); //구조분해할당
//import { odd, even } from './var';

function checkOddOrEven(number){
    if (number % 2){
        return odd;
    }else{
        return even;
    }
}

module.exports = checkOddOrEven;

index.js

const {odd, even} = require('./var');
const checkNumber = require('./func');

function checkStringOddOrEven(str){
    if(str.length % 2 ){
        return odd;
    }else{
        return even;
    }
}

console.log(checkNumber(10));
console.log(checkStringOddOrEven('hello'));

  • 파일 끝에 module.exports로 모듈로 만들 값을 지정한다
  • 다른 파일에서 require(파일 경로)로 그 모듈의 내용 가져올 수 있다.
    • node index로 실행한다
    • const { odd, even } 부분은 module.exports를 구조분해 할당한 것이다

export default

  • 자바스크립트 자체 모듈 시스템 문법이 생김(var.js, func.js 주석)
    • 크게는 require 대신 import, module.exports 대신 export default 쓰는 것으로 바뀌었다
    • 아직 노드에서의 지원은 완벽하지 않음. mjs 확장자를 사용해야 한다.(레거시 코드가 남아있기 때문이다)
728x90

'Node > 노드 기능' 카테고리의 다른 글

process  (0) 2022.07.23
모듈 심화, 순환 참조  (0) 2022.07.23
_filename, _dirname, exports와 this  (0) 2022.07.23
Global과 콘솔, 타이머  (0) 2022.07.23
REPL와 js 파일 실행하기  (0) 2022.07.23