캐싱 , require, 순환참조 [ node.js 교과서 ]
2023. 4. 10. 15:31ㆍnode.js
본 게시글은 node.js 교과서 강의를 듣고 정리한 글입니다.
캐싱
- 파일은 하드디스크에서 불러오는 것은 느리고 메모리에서 불러오는 것은 빠르다.
- 하드디스크에 있는 정보를 메모리로 옮겨오는 것을 캐싱이라고 한다.
require 의 특성
- require 가 제일 위에 위치할 필요는 없다.
- require.cache 에 한번 require 한 모듈에 대한 캐슁 정보가 들어있다.
- require.main 은 노드 실행시 첫 모듈을 가리킨다.
// var.js
const odd = "홀수입니다.";
const even = "짝수입니다.";
exports.odd = odd;
exports.even = even;
// require.js
console.log("require가 가장 위에 오지 않아도 됩니다.");
module.exports = "저를 찾아보세요";
require("./var");
console.log("require.cache입니다.");
console.log(require.cache);
console.log("require.main입니다.");
console.log(require.main === module);
console.log(require.main.filename);
실행 결과
require가 가장 위에 오지 않아도 됩니다.
require.cache입니다.
[Object: null prototype] {
'/Users/yunmun-yeol/Documents/test/require.js': Module {
id: '.',
path: '/Users/yunmun-yeol/Documents/test',
exports: '저를 찾아보세요',
filename: '/Users/yunmun-yeol/Documents/test/require.js',
loaded: false,
children: [ [Module] ],
paths: [
'/Users/yunmun-yeol/Documents/test/node_modules',
'/Users/yunmun-yeol/Documents/node_modules',
'/Users/yunmun-yeol/node_modules',
'/Users/node_modules',
'/node_modules'
]
},
'/Users/yunmun-yeol/Documents/test/var.js': Module {
id: '/Users/yunmun-yeol/Documents/test/var.js',
path: '/Users/yunmun-yeol/Documents/test',
exports: { odd: '홀수입니다.', even: '짝수입니다.' },
filename: '/Users/yunmun-yeol/Documents/test/var.js',
loaded: true,
children: [],
paths: [
'/Users/yunmun-yeol/Documents/test/node_modules',
'/Users/yunmun-yeol/Documents/node_modules',
'/Users/yunmun-yeol/node_modules',
'/Users/node_modules',
'/node_modules'
]
}
}
require.main입니다.
true
/Users/yunmun-yeol/Documents/test/require.js
- require.main 으로 어떤 파일을 실행한건지 알아낼 수 있다.
- import 는 가장 위에 있어야 한다.
순환참조
- 두 개의 모듈이 서로를 require 하는 상황을 조심해야 한다.
- 두 개의 모듈이 서로를 require 하게 되면 module.exports 가 함수가 아니라 빈 객체가 된다. ( 무한 반복을 막기 위해 의도됨 )
- 순환참조하는 상황이 나오지 않도록 하는게 좋다.
'node.js' 카테고리의 다른 글
다이나믹임포트 [ node.js 교과서 ] (0) | 2023.04.10 |
---|---|
ECMAScript 모듈 [ node.js 교과서 ] (0) | 2023.04.10 |
this [ node.js 교과서 ] (0) | 2023.04.10 |
CommonJS 모듈 시스템 [ node.js 교과서 ] (0) | 2023.04.10 |
node.js 를 알아보자 [ node.js 교과서 ] (0) | 2023.04.10 |