[NodeJS] require() 함수 동작원리
Node.js

[NodeJS] require() 함수 동작원리

반응형

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에 찍힐 것입니다.

 

 

 

 

 

 

 

 

 

 

반응형