본문 바로가기

Node.js공부/Node.js 원활한 사용을 위한 세부 공부

[NodeJS] 변수 선언 및 모듈화에 대하여

반응형

(기초) const, let, var 차이

  • const vs. let
    • immutable 차이.
    • const 로 선언된 변수에 있어서는 값 재할당이 되지 않는다.
  • let vs. var
    • 변수 재선언 가능성의 차이.
    • let 으로 선언된 변수에 있어서는 동일한 이름으로 재사용 할 수 없다.

exports vs. module.exports

// 하나의 모듈 패키지를 export 할 때
module.exports = ${function} 

// 다른 파일에서 사용 할 때
const ${function} = require('filename.js');
// 여러 함수를 export 할 때
module.exports = {
    'func1': ${function1},
    'func2': ${function2}
}

// 또는

exports.func1 = ${function1};
exports.func2 = ${function2};

// 위 모듈을 디른 파일에서 사용할 때

const func1 = require('filename.js').func1;
const func2 = require('filename.js').func2;

export default vs. module.exports

export default와 module.export 의 차이

// input
export const foo = 42;
export default 21;

// output
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var foo = exports.foo = 42;
exports.default = 21; 

input과 같이 선언된 변수 및 모듈에 대해서 바벨은 output과 같이 처리한다.

## 1.
var bar = require('./input').default;

## 2. ES6
import bar from './input';

위 모듈을 import 할 경우 1 또는 2와같이 선언하여 사용할 수 있다.

2와 같은 선언문을 바벨은 아래와 같이 컴파일 하기 때문이다.

'use strict';

var _input = require('./input');

var _input2 = _interopRequireDefault(_input);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

console.log(_input2.default);

export default

export MDN

  1. export 문은 import 로 가져올 수 있다.

  2. 내보내기에는 named와 default 가 있다.

    • named 는 여러 값을 내보낼 때 사용하고, import할 때 내보낸 이름으로 import해야한다.

    • default 는 하나의 값만 내보낼 때 사용하며, import할 때 어떤 이름으로 사용해도 상관 없다.

      // test.js
      let k; export default k = 12;
      
      // import example
      // 임의의 다른 파일
      import m from './test'; // k가 기본 내보내기이므로, 가져오는 이름으로 k 대신 m을 사용해도 문제 없음
      console.log(m); // 12 기록
반응형