
모든 모듈에서 별도의 모듈 로딩 없이 사용할 수 있는 내장 객체
global 변수를 사용해 파일 간 데이터 공유가 가능하긴 하지만 유지보수가 어려우니 모듈 형태로 쓸 것을 권장한다
setImmediate() : 즉시 콜백 함수 실행
clearImmediate() : setImmediate() 취소
setInterval() : 주어진 시간마다 콜백 함수 반복 실행
clearInterval() : setInterval() 취소
setTimeout() : 주어진 시간 후 콜백 함수 실행
clearTimeout() : setTimeout() 취소
console : 디버깅하기 위해 주로 사용됨
__dirname : 현재 모듈의 디렉토리 이름 절대 경로__filename : 현재 모듈의 파일 이름 절대 경로exports : module.exports의 레퍼런스module : 현재 모듈에 대한 레퍼런스require() : 모듈을 import할 때 사용module.exports 또는 exports 객체로 외부에 공개되며 공개된 모듈은 require()로 import할 수 있다.require()로 특정 파일 모듈을 불러올 때는 경로를 명시해 주어야 한다.// foo.js
module.exports.foo = function () {...}
// OR
exports.fas = function () {...}
// app.js
const { foo, fas } = require('./foo.js');
// Buffer.from(data) : data로 새로운 Buffer 생성
const buf = Buffer.from('Hello');
console.log(buf); // <Buffer 48 65 6c 6c 6f>
// buffer.toString() : Buffer를 문자열로 변환
console.log(buf.toString()); // Hello
const fs = require('fs');
// READ STREAM
const readStream = fs.createReadStream('./docs/post1.txt');
// WRITE STREAM
const writeStream = fs.createWriteStream('./docs/post2.txt');
// * .on('data', callback) : data 이벤트 리스너, 스트림에서 buffer가 전달될 때마다 트리거된다
readStream.on('data', (chunk) => {
// * post1.txt 파일을 읽어서 post2.txt 파일 생성
writeStream.write(chunk.toString());
});
// 위의 코드처럼 readable stream을 받아 writable stream으로 데이터를 전송하는 경우 pipe를 사용해 간단하게 표현할 수 있다.
// readStream.pipe(writeStream);