node.js

[Node.js] Node 내장 객체 및 모듈

vhxpffltm 2019. 8. 21. 22:11

노드는 코드를 모듈로 만들 수 있다는 점에서 브라우저의 자바스크립트와 다르다. 모듈이란 특정한 기능을 하는 함수나 변수들의 집합이다. 

 

모듈의 사용법을 간단하게 알아보자

 

com.js

 

f.js

 

index.js

 

위와 같은 결과를 얻을 수 있다. 배열 위의 [..] 결과는 파라미터 10을 지우고 얻은 결과이다. 함수 ff를 제대로 사용함을 보여주고 있다.

 

노드의 내장객체로는 global, console, 타이머, process 등이 있는데 이중 __dirname만 살펴보자.

 

__dirname 은 경로에 대한 정보를 제공한다. 이것을 실행하면 현재 파일명과 경로로 바뀐다.

 

노드 내장 모듈로 OS, path, url, querystring 등이 있으며 파일 시스템을 접근하기 위해 fs모듈도 있다. 필요에 따라 해당내용을 찾아보면 될 것 같다.

 

파일 시스템에서 동기, 비동기 메서드

동기 메서드, 비동기 메서드 : node는 대부분의 메서드를 비동기 지원함. 
비동기 메서드들은 백그라운드에 해당 파일을 읽으라고만 요청 후, 다음 작업으로, 후에 읽기가 완료되면 백그라운드가 다시 메인 스레드에게 알림을 준다. 
* 동기와 비동기 : 함수가 바로 return 되는지 여부
* 블로킹과 논블로킹 : 백그라운드 작업 완료 여부, 

 

 

예시를 보자

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const fs = require('fs');
console.log('시작!!');
 
fs.readFile('./read.txt',(err,data) =>{
    if(err) throw err;
    console.log('1번',data.toString());
});
fs.readFile('./read.txt',(err,data) =>{
    if(err) throw err;
    console.log('2번',data.toString());
});
fs.readFile('./read.txt',(err,data) =>{
    if(err) throw err;
    console.log('3번',data.toString());
});
console.log('끝!!!');
 

 

 

비동기 메서드들은 백그라운드에 해당 파일을 읽으라고만 요청하고 다음작업으로 넘어간다. 즉 파일 읽기 요청만 3번 보내고 '끝' 을 찍고 읽기가 완료되면 백그라운드가 다시 메인 스레드에 알림을 준다. 그 다음 콜백 함수를 실행한다. 결과의 순서는 랜덤이다.

 

그렇다면 비동기 방식으로 하되 순서를 유지하려면 어떻게 해야할까? 콜백의 지옥으로 해결할 수 있다. 즉 함수안에 계속 함수를 넣어주면 순서대로 결과가 유지될 것이다.

 

파일 읽기와 쓰기에서 쓰이는 버퍼와 스트림만 간단하게 이해하고 끝내보자.

 

버퍼와 스트림


 파일을 읽고 쓰는데 버퍼와 스트림 방식이 있다. 버퍼링은 영상을 재생할 수 있을때까지 데이터를 모음, 스트리밍은 영상 데이터를 조금씩 전송하는 동작. 버퍼의 크기를 작게 만들어서 여러 번에 나눠서 보내는 방식이 스트림(1MB -> 100번 보내서 100MB 만듬)

이벤트 - .on을 사용하여 이벤트 발생시, 콜백 함수를 호출하도록 이벤트 등록

 

기타 다른 Node의 내장 기능과 메서드는 Reference를 참고하면 좋을 것 같다.

 

'node.js' 카테고리의 다른 글

[node.js] Express_ Router객체  (0) 2019.08.24
[node.js] Express_구조 와 미들웨어  (0) 2019.08.24
[Node.js] NPM 시작하기  (0) 2019.08.21
[node.js] 콜백 함수, 프로토타입  (0) 2019.08.17
[node.js] ES6 문법  (0) 2019.07.29