반응형
require()는 대략적으로 다음과 같은 구조라고 합니다.
var require = function(src){
var fileAsStr = readFile(src) //line 2
var module.exports = {} //line 3
eval(fileAsStr) //line 4
return module.exports //line 5
}
const express = require('express')
1. express라는 것을 function의 src인자로 넣습니다.
2. fileAsStr이라는 변수에 파일을 읽어와 저장합니다.
3. module.exports라는 빈 객체를 만듭니다.
4. fileAsStr을 실행합니다.
기본적으로 module.exports 와 require를 사용할 수 있는 이유는
node.js 의 파일들은 실행될 때 기본적으로 다음의 함수가 감싼 것처럼 처리되기 때문입니다.
(function (exports, require, module, __filename, __dirname) {
// 파일 내용
}
IIFE(Immediately Invoked Function Expression)란?
정의와 동시에 즉시 실행되는 함수를 말합니다.
예를 들면 다음과 같습니다.
(function add(a, b) {
console.log(a + b)
})(1, 4)
// 5
require() 과 IIFE의 관련성
우선 require로 모듈을 불러오면 그 즉시 실행된다는 특징이 있습니다.
test.js에 다음 한 줄을 적고
// test.js
console.log("I'm from test.js");
같은 경로의 app.js에 test.js 를 require로 불러오겠습니다.
require('./test.js');
그리고 app.js를 실행시키면 콘솔 창에는
다음과 같이 test.js파일이 즉시 실행되며 console에 찍힐 것입니다.
반응형
'Node.js' 카테고리의 다른 글
[NodeJS] 템플릿엔진 (0) | 2022.04.10 |
---|---|
[Sequelize] TypeError: require(...) is not a function (0) | 2022.01.10 |
[Node.js] 동기와 비동기, 블로킹과 논블로킹 (0) | 2021.12.11 |
[Node.js] Stream이란?? (0) | 2021.08.12 |