노드에서는 이번 챕터에서 살펴보게 될 내장 객체, 그리고 따로 살펴볼 내장 모듈을 제공하고 있습니다. 예상하셨다시피 이 내장 객체와 모듈은 별도의 선언이나 설치가 필요 없이 바로 사용할 수 있습니다. 여기서 살펴볼 내장 객체 global은 브라우저의 window객체와 같은 레벨이라고 생각하시면 되겠습니다.
· 즉, global은 전역 객체로 작동합니다. 그래서 모든 파일에서 자유롭게 접근이 가능합니다.
· 브라우저에서 window.open을 open으로 호출이 가능했습니다. 이와 마찬가지로 global도 생략이 가능합니다. 우리가 사용하던 require도 사실은 global.require이고, 콘솔에 로그를 담는 console 객체 역시 global.console입니다.
※ 참고로 노드에서는 window / document 객체를 사용할 수 없습니다. 노드에서는 DOM, BOM이 없기 때문이죠. 그래서 window와 document를 아우르는 globalThis 객체가 있습니다. 브라우저에서는 globalThis가 window로, 노드에서는 globalThis가 자동으로 global이 됩니다. 예를 들어 터미널에서 globalThis === global을 출력하면 true라는 결과가 나옵니다.
이론적인 이야기이지만, 이 최상위 전역 객체인 global을 이용하면 다른 파일에서의 데이터 공유도 가능해집니다. 예를 들어 같은 폴더에 [globalA.js]와 [globalB.js]를 만들어 아래 예제처럼 작성해 보겠습니다.
// [globalA.js]
module.exports = () => global.message;
globalA 파일은 global.message 객체를 리턴하는 익명 함수를 모듈로 내보냈습니다.
// [globalB.js]
const A = require('./globalA');
global.message = 'Global Test String';
console.log(A());
/* 출력
Global Test String
*/
그리고 globalB에서는 globalA를 모듈로 불러와서 변수 A에 할당했습니다. A는 함수가 되었네요. 그런데, 이 globalB 파일에서 전역객체 global.message에 임의의 스트링을 할당했습니다. 그리고 이와 별개로 함수 A를 실행했습니다. 그런데 'Global Test String'을 출력했습니다. 즉, global.message를 출력하는 함수를 실행했더니 globalB에서 선언한 내용이 출력되는 것을 확인할 수 있습니다. 즉, 공유하는 전역 객체라는 것이죠.
'Programming > Node.js' 카테고리의 다른 글
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : 타이머 1 (1) | 2024.03.29 |
---|---|
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : console (0) | 2024.03.28 |
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : __filename, __dirname (0) | 2024.03.26 |
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : 다이나믹 임포트 (0) | 2024.03.22 |
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : ECMAScript 1 (0) | 2024.03.21 |