process 객체는 자바스크립트에서 지원이 되지 않는 객체로 node.js에서만 지원된다.
argv는 node.js 어플리케이션이 실행될 때의 파라미터가 기록된 객체로 실행파라미터를 출력할 수 있다.
process.argv.forEach((val, index, array) => {
console.log(index + ": " + val);
});
node.js는 이벤트 기반의 비동기 프로그램으로, 많은 객체들은 이벤트 기능을 상속 받아서 사용하고 있다.
node에서는 EventEmitter클래스에 구현된 addListener, on 두 개의 메서드를 이용하여 이벤트를 등록하여 사용한다.
let eventHandler = () => {
console.log("EXIT");
};
process.addListener("exit", eventHandler);
또는
let eventHandler = () => {
console.log("EXIT");
};
process.on("exit", eventHandler);
두 코드 동일하게 EXIT이 출력되는 것을 볼 수 있습니다.
on과 addListener
이벤트를 등록하는 메서드로 기능이 동일하다. 일반적으로 on을 사용한다고 함.
emit 메소드를 이용하여 이벤트를 강제로 발생 시킬 수 있다.
test라는 이벤트를 강제로 발생 시키고 이벤트 핸들러를 동작시키는 예이다.
process.on('test', () => {
console.log('TEST Event!');
})
process.emit('test')
서버의 기본적인 하드웨어 자원들의 정보를 확인할 때 주로 사용한다.
let os = require('os');
console.log(os.hostname());
os.type(), os.platform() : 운영체제를 확인할 수 있다.
os.arch() : 서버의 아키텍쳐 구분 가능
os.networkInterface() : 서버의 로컬 IP 확인 가능
let fs = require('fs');
let fs = require('fs');
fs.readFile('test.txt', 'utf8', function(err, data) {
if(err) throw err;
console.log(data);
});
동기식 처리 방법은 fs.readFileSync로 처리가능
let fs = require('fs');
fs.exists('test1.txt', function(exists) {
console.log('fs.exists : ', exists);
})
-> true, false와 같은 결과를 얻을 수 있다.
let fs = require('fs');
fs.writeFile('message.txt', 'Hello Node', 'utf8', function(err) {
if(err) throw err;
console.log('saved!');
});
복잡한 Url 즉 프로토콜, 호스트 네임, get 방식으로 넘겨주는 쿼리, 파일 path 등 복잡한 url String을 객체화 시켜주고 또 객체를 다시 url로 변환해 주는 역할을 합니다.
url을 객체화 시켜줄때는 url.parse()
다시 직렬화 할때는 url.format() 메서드를 사용합니다.
let url = require("url");
let obj = url.parse(
"https://www.google.com/search?sxsrf=ALeKk02IM40Ij_JdVCtpiaPUKEzYluCcYg%3A1598448860483&source=hp&ei=3GRGX4mRG8SXr7wPvPaikAo&q=%E3%85%81%E3%85%87%E3%84%B4&btnK=Google+%EA%B2%80%EC%83%89"
);
console.log(obj);
console.log(obj.format());
이외에도 Util 모듈, net 모듈 등이 있습니다.
끝~!