브라우저에서는 window라는 전역 객체가 존재한다면, Node.js에서는 global 이라는 전역 객체가 존재한다. 그래서 Node.js 터미널에서 현재 터미널의 명령어로 this === global
을 입력하면 true 라는 결과가 나오게 된다.
또한 이러한 global 객체는 var 변수를 통해 추가적인 global 객체의 프로퍼티를 만들 수 있다.
process 프로퍼티 또한 global 객체에 있는데
process.argv를 통해서 node 명령어나 npm 명령어를 통해 입력받은 명령어들을 볼 수 있다.
//만약 실행 명령어로 'node ./파일 이름.js 인자1 인자2 인자3' 을 입력했다면
//./파일 이름.js에서
process.argv.forEach(argument => console.log(argunment));
//코드를 통해 입력 명령어가 어떻게 되는지 확인할 수 있다.
fs 같은 경우 node.js 에서 파일 시스템과 소통하기 위한 모듈로서 이러한 파일 시스템 소통 방식은 비동기, 동기 방식 2가지 모두 존재하지만, 성능 상의 이점을 위해 비동기로 구현하는 것이 좋다.
기본적으로는 동기식으로 작동하며 비동기식으로 구현하기 위해서는 util 모듈의 promisify 함수를 써야 한다.
import * as fs from 'fs';
import * as util from 'util'
//기존의 동기식으로 작동하는 writeFile 함수를 Promise 객체를 반환하는 비동기 함수로 바꾼다.
const writeFile = util.promisify(fs.writeFile);
writeFile('./newFile.txt', null)
.then(() => {
console.log('File created successfully');
})
.catch(error => {
console.log(error);
});