HANA -J

12. 즉시호출 함수 표현식(IIFE)와 node.js require()함수 본문

개발/Javascript

12. 즉시호출 함수 표현식(IIFE)와 node.js require()함수

Hana-J 2021. 11. 25. 22:45

Node.js에서 require()함수는 일반적으로 외부의 모듈을 불러올 때 사용한다.

// require()함수의 실행 구조
var require = (function(src){          //line 1 -> src를 받음
    var fileAsStr = readFile(src)      //line 2 -> src파일을 읽어 fileAsStr에 할당
    var module.exports = {}            //line 3 -> module.export에 빈 객체 할당
    eval(fileAsStr)                    //line 4 -> fileAsStr을 eval함
    return module.exports              //line 5 -> 리턴함
})()

> eval 코드 : 빌트인 전역 함수인 eval함수에 인수로 전달되어 실행되는 소스코드. => eval실행 컨텍스트가 생성된다 (자세한건 23장)

외부파일에서 route.js파일을 작성

const express = require('express');
const router = express.Router();
const Post = require('../models/Post');

//New post
router.get('/new', function(req, res){
    res.render('posts/new');
});

module.exports = router;

app.js파일에서 그파일을 불러오려면 require()함수를 이용

const route = require('/route');

//저코드를 작성했을때 require()함수의 실행구조
var require() = (function(src){
	var fileAsStr = readFile(src)
    var module.exports = {}
    
    //exports라는 객체에 router객체를 할당 ..?
    router.get('/new', function(req, res){
    res.render('posts/new');
	});
    return module.exports
})()

내가 이해한 바로는 route.js파일자체의 모든코드를 한개의 객체로 생성해서 exports라는 객체에 할당을 해주면 즉시실행 함수이므로 밑의 파일을 읽기전에 함수를 실행해서 객체의 모든값을 가지고 밑의 파일을 실행할 수 있기 때문에 다른파일에 있는 값도 가져다가 쓸 수 있는거같다.. 

정확하게 이해는 아직 좀 어렵지만 뭔가 추상화의 느낌이 뭔지 오는거같다.. 열공하자🔥

728x90

'개발 > Javascript' 카테고리의 다른 글

25. 클래스  (0) 2021.11.29
13. 전역변수의 문제점  (0) 2021.11.28
12. 함수(1)  (0) 2021.11.25
8-11장  (0) 2021.11.20
1-7장  (0) 2021.11.19
Comments