// 간략한 버전
(function (exports, require, module, __filename, __dirname) {
function log(message) {
console.log(message);
}
module.exports = log;
// 같은 의미로 사용할 수 있다.
// module.exports.log = log;
// exports.log = log;
// export는 module.exports에 대한 참조라서 아래와 같이 선언할 수 없다.
// exports = log;
}
Node
Global Objects
console
,setTimeout()
,clearTimeout()
,setInterval()
,clearInterval()
등의 객체가 있다. 브라우저에서는 모든 Global Object를window
Object를 통해서 접근할 수 있다.node 는
window
대신global
객체가 있다.window
와는 다르게 변수나 함수가global
객체에 추가되지 않는다.Modules
window
에 추가되어서 기존의 함수를 Overload 한다.module
객체를 사용할 수 있다.module.exports
에 변수나 함수를 직접 할당할 수 있다.Module Wrapper Function
모듈은
exports
,require
,module
,__filename
,__dirname
이 파라미터로 전달되는Module Wrapper Function
에 의해 감싸진다.Built-in Modules
OS
File System
Events
Event Emitter 클래스를 사용한다. 노드가 제공하는 기본 모듈들은
Event Emitter
를 구현하는 것이 많다.HTTP
http.Server
는net.Server
를 상속받는다.net.Server
는EventEmitter
를 상속 받는다.