대기업을 향한 디벨롭 블로그

2장 /Node Module의 대하여 본문

Node.js

2장 /Node Module의 대하여

MHY.PRO 2022. 2. 25. 20:59

Nodejs 의 모듈시스템의 대해 배워보자

 

모듈이란 부품같은 역할을 해서 여러부품을 조립해서 하나의 프로그램을 만드는것이라고 생각하면된다.

어떤것을 만들더라도 웹에 공통된것들이 있을것이다. 모듈을 만들어놓으면 A페이지에서도 이용할수있고

B페이지에서도 이용할 수 있을 것이다. 기능을 단위로 분리하고 기능을 이루는 코트를 모아서 캡슐화모듈이라고 한다. 모듈은 하나의 Js파일이라고 생각하면 된다. 여러 개의 기능별로 js파일을 만들고 필요한곳에 require해서 사용할수있다. 모듈시스템은 객체지향 프로그래밍에서 캡슐화와 동일한 개념이다.

a.js - > code

1 const A = ‘안녕나는a.js에서 A변수에 담겨진 문자열이야’;

2 module.exports = A;     -> 외부에서 사용할수있게 해주는 코드이다. 외부로 내보낸다.
B.js - > code 

1 const B = require(‘./a);   -> a.js에서 외부로 보내온 코드를 require를 통행 받아온다.

2 console.log(‘a.Js.에서 넘어온것은?  ’+B);

터미널 -> node b.js

a.js에서 넘어온것은? 안녕나는a.js에서 A변수에 담겨진 문자열이야 -> 출력

 

require() -> 모듈을 불러온다.

module.exports=프로퍼티 또는 exports.프로퍼티 -> 모듈을 내보낸다.

이렇게 쉽게말해 주고받는 코드는 require와module.exports이다.

 

모듈시스템 순환 참조

a.js - > code

1 const A = ‘안녕나는a.js에서 A변수에 담겨진 문자열이야’

2 const b = require(‘./B’) -> B의 모듈을 받아온다.

3 console.log(‘b에서 불러온것은?   ’+b)

4 module.exports = A;     -> 외부에서 사용할수있게 해주는 코드이다. 외부로 내보낸다.
B.js - > code 

1 const B = require(‘./a);   -> a.js에서 외부로 보내온 코드를 require를 통행 받아온다.

2 const a = ‘나는 B.js에서 a에 담긴변수야’;

3 module.exports = a

4 console.log(‘a.Js.에서 넘어온것은?  ’+B);

 

터미널에서 a.js와B.js를 실행해보아라 둘다 출력될것이다.

이렇게 a.js와 b.js 를 서로 공유하면서 쓸수있다. 이것을 순환참조라고 한다.

하지만 여기서 b.js만 실행한다고 치는데 a.js는 실행이안되서 변수를 내보내지 않았는데 어떻게 실행이되지? 라는 의문이 들기 시작한다. 이유는 자바스크립트가 순환 참조를 허용하기 때문이다.

모듈을 보낼때 두가지의 방법을 사용한다.

  1. module.exports=보낼프로퍼티;
  2. exports.보낼프로퍼티;

1번의 방법은 하나의 값(원시 타입,함수,객체)를 할당하고 , 2번의 방법은 메서드 , 프로퍼티 여러 개를 보낼수있다.

위에서 사용한 방법은 1번방법이고 하나의 타입 변수를 보냈었었다.

 

폴더를 지정해서 require하기

Module 이라는 파일이 있다고 하자 Module

-index.js

-calc.js

-print.js. 

가들어있다. 여기서 const mymodule = require(./Module) ->이렇게 폴더를 리콰이어 해주면 폴더안에있는 모든js파일의 모듈을 사용할수있다.

 

모듈의 종류

-기본(코어)모듈, 확장 모듈 : 기본적으로 포함되어 있다면 기본모듈이고 아니라면 확장 모듈이다

-일반 모듈 , 네이티브 모듈 : 자바스크립트로 작성되었으면 일반 모듈이고, 그외의 언어로 작성되었으면 네이티브 모듈이라고 한다.

-지역모듈 , 전역모듈 : 현재 웹을 사용하기 위해서만 만들어졌으면 지역모듈이고 어디든 사용할 수 있게 확장했다면 전역 모듈입니다.

 

-기본모듈 -> 기본라면   -> 파일 입출력 , 이벤트관리 , http프로토콜 관리 등 기본적인 기능제공

-확장모듈 -> 토핑(김치,치즈,떡,만두)이들어간라면. ->기본기능을 좀 더 편리하게 사용할수있는 기능제공

 

 

전역 객체

전역 객체는 어디에서나 사용할 수 있는 객채이다 클라이언트가 사용하는 자바스크립트 프론트 측의 자바스크립트에서는 window,document가 젼역객체이다.

 

alert(‘안녕하세요’) -> window(전역객체)메서드이다. 다만 window.만 생략된것

 

서버측에서의 자바스크립트는 global이라는 전역객체를 사용하고있다.

require() , setTimeout() , console.log() , 함수들은 global객체에 해당된다. 앞의global만 생략된것

Ex) global.require()     global.console.log()