[Node.js processing model]
- 이벤트기반의 비동기 I/O(콜백) 프레임워크
1) 클라이언트가 보내는 요청을 모두 이벤트로 처리 : 이벤트 큐에 쌓기
2) 이벤트 루프 : 이벤트 큐에 쌓인 이벤트를 하나하나 처리(싱글쓰레드) 후 요청 클라이언트에 응답
3) 이벤트 : 가벼운 처리 / 무거운 처리(네트워크, 파일 읽고 쓰기 등)
- 가벼운 처리 : 이벤트 루프 처리
- 무거운 처리 : 이벤트 루프가 Non-blocking Worker(C++)로 보내 처리 후 이벤트 형태로 큐에 다시 전달, 루프가 큐에서 뽑아 처리(응답)
[모듈 시스템]
- 모듈 : 일정 기능을 하는 코드 덩어리, 서비스를 구현할 때 하나의 소스코드로 만드는게 아니라 기능별로 모듈화해서 만듬
- 브라우저 : window 객체(스코프 겹치지 않도록)를 이용하거나, RequireJS와 같은 의존성 로더(라이브러리) 사용
window.module1 = function(){
return "module1"
}
window.module2 = function(){
return "module2"
}
- Node.js : node의 모듈 시스템 스펙 CommonJS, 파일 형태 모듈 관리, 파일을 읽을 수 있음
/* 기본 제공 모듈 */
const http = require('http');
http.createServer();
/* math.js (custom module) */
function sum(a, b) {
return a + b;
}
module.exports = {
sum: sum
};
/* index.js */
const math = require('./math.js');
let result = math.sum(1, 2);
console.log(result); // 3
[비동기]
- 기본적으로 비동기로 동작함 : A 처리가 모두 끝난 뒤에 B를 하는게 아님
- 기본 모듈로 비동기와 동기처리 비교 : readFile / readFileSync
/* sync */
const fs = require('fs');
const data = fs.readFileSync('./data.txt', 'utf-8');
console.log(data);
/* async */
const fs = require('fs');
const data = fs.readFile('./data.txt', 'utf-8', (err, data) => {
if(err) {
throw err;
}
console.log(data);
});
- 동기처리 : 코드 줄 별로 처리(파일 읽을 때까지 기다림) 후 다음 코드 처리
- 비동기처리 : 콜백함수로 이벤트 처리(이벤트큐), 이벤트 단위 처리(완료된 것부터 응답)
'nodejs' 카테고리의 다른 글
[node.js] npm, package.json 제대로 알고 가기 (0) | 2017.06.08 |
---|---|
[node.js] http 모듈로 간단하게 유저 API 서버 만들기 (0) | 2017.06.05 |
[node.js] 모듈과 미들웨어 개념 (0) | 2017.05.23 |
[node.js]Supervisor로 웹서버 자동 재시작하기 (0) | 2017.05.15 |
[node.js] express 로그인 정보 전달하기 (0) | 2017.05.15 |
댓글