Node.js 는 크게 3가지를 제공한다
- 바이너리로 컴파일 되어야 하는 모듈이다
- lib/ 폴더에 위치한다
Global 객체
대표적인 node_modules에 있는 전역 객체로 모든 파일에서 접근 가능하다
- 원하는 값을 프린트 할 때 사용하는 console 함수도 글로벌객체 안에서 존재한다
- global 객체는모든 파일에서 접근이 가능하기 때문에 'global'을 생략하고 소속된 함수를 사용 가능하다
const global = require('global')
global.console.log('hi')
console.log('hi2')
// tt.js
function third() {
console.log('func in tt.js')
}
const first = 'var 1 in tt.js';
const second = 'var 2 in tt.js';
module.exports = {
first,
second,
third
};
// test2.js
tt = require('./tt.js')
tt.third()
Module {
id: '.',
path: '/home/heechul/testnode',
exports: {},
parent: null,
filename: '/home/heechul/testnode/test2.js',
loaded: false,
children: [
Module {
id: '/home/heechul/testnode/test.js',
path: '/home/heechul/testnode',
exports: [Object],
parent: [Circular],
filename: '/home/heechul/testnode/test.js',
loaded: true,
children: [Array],
paths: [Array]
},
Module {
id: '/home/heechul/testnode/tt.js',
path: '/home/heechul/testnode',
exports: [Object],
parent: [Module],
filename: '/home/heechul/testnode/tt.js',
loaded: true,
children: [],
paths: [Array]
}
],
paths: [
'/home/heechul/testnode/node_modules',
'/home/heechul/node_modules',
'/home/node_modules',
'/node_modules'
]
}
모듈을 export해서 전역으로 사용하기 위해서는 module.export를 해주었다. 하지만 exports라는 객체를 사용하여서도 같은 작업이 가능하다
// tt.js
function third() {
console.log('func in tt.js')
}
const first = 'var 1 in tt.js';
const second = 'var 2 in tt.js';
module.exports = { [1]
first,
second,
third
};
exports.first = first; [2]
exports.second = second;
exports.third = thrid
[1]과 [2]모두 변수화 함수를 export하는 같은 역할을 수행한다
console.log(module.exports === exports)
위와같이 모듈객체 안에있는 exports와 exports객체가 같은지 확인해보면 'True'가 나온다.
이를 통해서 두개의 exports가 같은 객체를 참조하고 있다고 추측할 수 있다.