노드는 코드를 모듈로 만들 수 있다는 점에서 브라우저의 자바스크립트와 다르다. 모듈이란 특정한 기능을 하는 함수나 변수들의 집합이다.
모듈의 사용법을 간단하게 알아보자
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('시작!!');
if(err) throw err;
console.log('1번',data.toString());
});
if(err) throw err;
console.log('2번',data.toString());
});
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 |