Node.js 공부기(2)
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.log
에 subfile
이 먼저 출력되는 것을 알 수 있다.
책에서는 실제로 파일이 많아지면 이 부분을 실수할 수 있기 때문에 주의하라고 당부한다. 또한, 변수의 범위는 일반적으로 해당 파일을 벗어나지 못하지만, 특별한 경우 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);
다음은 실행 화면이다.
- 처음 gloabl로 temp를 a로 선언했기 때문에 a.
- require로 subfile02.js로 넘어가서 3,temp(a)가 나옴.
- 그 후 temp = b로 변경되어 4,b가 출력
- 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을 통해 모듈을 가져올 수 있다는 것을 알았다.
Author And Source
이 문제에 관하여(Node.js 공부기(2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@n0wkim/Node.js-공부기2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)