Node.js 공부기(2)

n0wkim·2020년 12월 29일
2

Node.js 공부기

목록 보기
2/4
post-thumbnail

5장, Node.js 시작하기

node.js에서 많은 모듈을 다룰 수 있다.

다룰 수 있는 모듈의 종류

  • console
    콘솔은 log, error, info 등 여러 메서드가 존재.
    간단하게는 현재 프로그램 혹은 서버의 CPU, 메모리부터 현재 실행되고 있는 행(Line)의 위치와 변수의 값까지 프로그램 내부에서 일어나고 있는 모든 상태를 화면에 출력할 수 있다.

  • require
    파일을 큰 기능별로 나누고 작은 기능들을 구현하는 경우가 많다.
    require을 사용해 여러 개의 파일과 여러 개의 작은 프로젝트로 분할해서 함수를 호출하는 규칙들만 문서화하고, 그 규칙에 맞춰서 기능을 개발하는 방법이 있다.

일단 console은 너무 익숙하기 때문에 자세하게 정리하지는 않겠다.
require은 안드로이드 어플리케이션을 만들면서 봤었는데, 완벽하게 동일한 것인지는 모르겠는데 하는 역할은 동일한 것 같다. 쉽게 말해 모듈/메서드들을 가져오는 것이다.

const filesystem_var = require('fs');

filesystem_var.unlink('/tmp/hello',(err)=>{
	if(err){
    	throw err;
        return;
    }
	
    console.log('delete success');
});

위의 코드를 실행하면 /tmp/hello라는 파일을 삭제하고, 성공할 경우 성공을 출력, 에러일 경우 에러를 던져준다.(throw)

이처럼 자바스크립트에서 기본으로 전역 제공하는 게 아닌 모든 모듈/메서드들은 require을 통해서 불러오게 되며, Node.js를 여러 개의 파일에 분할해서 작업할 때도 require를 사용할 수 있다.

파일 두 개를 만들고 호출하기

다음과 같은 두 파일을 만들어 보자.

//파일명 : start01.js
const temp = require("./subfile01.js");
console.log("Start.js File");
//파일명 : subfile.js
console.log("subfile.js File");

그 후 start01.js를 실행한 결과값이다.

실행 결과를 보면 start01.js에서 subfile을 먼저 require로 호출했기 때문에 console.logsubfile이 먼저 출력되는 것을 알 수 있다.

책에서는 실제로 파일이 많아지면 이 부분을 실수할 수 있기 때문에 주의하라고 당부한다. 또한, 변수의 범위는 일반적으로 해당 파일을 벗어나지 못하지만, 특별한 경우 global이라는 선언으로 전역 변수로 만들 수 있다.

//파일명 : start02.js
global.temp = "a";
console.log(1,temp);
const file_load = require("./subfile02.js");
console.log(2,temp);
//파일명 : subfile02.js
console.log(3 , temp);
temp = "b";
console.log(4,temp);

다음은 실행 화면이다.

  1. 처음 gloabl로 temp를 a로 선언했기 때문에 a.
  2. require로 subfile02.js로 넘어가서 3,temp(a)가 나옴.
  3. 그 후 temp = b로 변경되어 4,b가 출력
  4. start02.js의 require 다음 line에서 2,temp(b) 출력. global로 선언해서 temp값이 바뀜.

주의점

마지막으로 한 가지 주의할 점이 있는데, 모듈을 호출할 시에는 한 번 호출한 모듈은 두 번 호출되지 않는다는 점이다. 이게 뭔소린가 했는데 코드를 보고 바로 이해되었다.

//파일명 : subfile04.js
console.log(1);
const a = require("./subfile04.js");
console.log(2);
const b = require("./subfile04.js");
console.log(3);
//파일명 : subfile04.js
console.log(4);

다음은 실행 화면이다.

이로써 세세한 호출 규칙 및 require을 통해 모듈을 가져올 수 있다는 것을 알았다.

profile
끙끙대며 배우는 중

0개의 댓글