모든 모듈에서 별도의 모듈 로딩 없이 사용할 수 있는 내장 객체
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);