Node.js 강좌 자료] Event Driven Programming

 

Node.js 강좌 자료] Event Driven Programming

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

 

Event Driven Programming

 

 - Node는 이벤트를 광법위하게 사용 -> 다른 비슷한 기술에 비해 빠른 실행 속도를 내는 주요 원인

 

 - 이벤트 동작 구조

 

Node.js 강좌 자료] Event

 

Node.js 강좌 자료] Event

 

 

 


실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

Event

 

 

§Node.js 애플리케이션은 단일 쓰레드 모델로 구현

»  그럼에도 불구하고 이벤트와 콜백을 사용해서 동시성을 지원

§모든 Node.js API는 비동기이며 단일 쓰레드 모델로 구현되고 동시성을 지원하기  위해 비동기 함수를 호출
§Node는 이벤트 루프를 운영

»  어떤 작업이 완료되었을 때 이벤트를 발생시키면 이벤트를 수신하는 함수가  호출 되도록 관리 à 옵저버 패턴


 

 

Node.js 강좌 자료]Promise 사용하기

 

Node.js 강좌 자료]Promise 사용하기

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

Promise 사용하기

 

 

- 자바스크립트로 개발할 경우(특히 java) 수많은 콜백중첩 구조때문에 힘들 경우가 있다

const fs = require('fs’)

fs.readFile('input.txt', (err, data) => {

    console.log(data.toString())

    fs.readFile('input2.txt', (err, data) => {

        console.log(data.toString())

        fs.readFile('input3.txt', (err, data) => {

            console.log(data.toString())

        })

    })

 })

 

 

 

const fs = require('fs’)

function readFileEx(fname) {

  return new Promise((resolve, reject) => {

  fs.readFile(fname, (err, data) => {

  resolve(data)

  })

  })

}

readFileEx('input.txt').then((text) => {

    console.log(text.toString())

    return readFileEx('input2.txt')

})

.then((text) => {

    console.log(text.toString())

    return readFileEx('input3.txt')

})

.then((text) => {

    console.log(text.toString())

})

 

 

 

 

Node.js 강좌 자료] 화살표 연산자 사용하기

 

Node.js 강좌 자료] 화살표 연산자 사용하기

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

화살표 연산자 사용하기

 

 

 

const fs = require('fs')

fs.readFile('input.txt', (err, data) => {

    console.log(data.toString())

})

console.log('Program Ended')

 

'자바' 카테고리의 다른 글

Node.js 강좌 자료] Event  (0) 2017.11.19
Node.js 강좌 자료]Promise 사용하기  (0) 2017.11.19
Node.js 강좌 자료] Non Blocking Code  (0) 2017.11.19
Node.js 강좌 자료] Blocking Code  (0) 2017.11.19
Node.js 강좌 자료] Callback?  (0) 2017.11.19

Node.js 강좌 자료] Non Blocking Code

 

Node.js 강좌 자료] Non Blocking Code

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

Non Blocking Code

 

 

 

- 데이터 파일 작성 (input.txt - 생략) 

 

 - 프로그램 코드 (sunc-test.js)

const fs = require('fs')

fs.readFile('input.txt', function(err.data){

​       console.log(data.toString())

})​

console.log('Program Ended')

 

 - 프로그램 실행

$ node sync-test.js

 

 

 - 실행 결과

Program Ended 

This is test content1

This is test content2

 

Node.js 강좌 자료] Blocking Code

 

Node.js 강좌 자료] Blocking Code

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

Blocking Code

 

 - 데이터 파일 작성 (input.txt)

This is test content 1  This is test content 2

 

 

 - 프로그램 코드 (sunc-test.js)

const fs = require('fs')

const data = fs.readFileSync('input.txt')

console.log(data.toString())

console.log('Program Ended')

 

 - 프로그램 실행

$ node sync-test.js

 

 

 - 실행 결과

This is test content1

This is test content2

Program Ended 

 

Node.js 강좌 자료] Callback?

 

Node.js 강좌 자료] Callback?

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

 

Callback?

 

§비동기 함수의 다른 이름
§어떤 작업이 완료 되었을 때 호출되는 함수
§Node는 콜백 함수를 광범위하게 사용하며 모든 Node의 API는 콜백을  지원하도록 구현
§어떤 함수가 반환할 때까지 기다리지 않기 때문에 많은 수의 요청을 처리 가능

 

Node.js 강좌 자료] 파일 시스템 사용 예제

 

Node.js 강좌 자료] 파일 시스템 사용 예제

 

 

 


실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

파일 시스템 사용 예제

 

 

 

 - 비동기 방식과 동기 방식

 

var fs = require('fs');

fs.readFile('input.txt', function(err, data) { //비동기 방식

if (err) {

return console.error(err);

}

console.log('Asynchronous read : ' + data.toString());

});

var data = fs.readFileSync('input.txt'); // 동기 방식  console.log('Synchronous read : ' + data);  console.log('Program Ended');

Asynchronous read : This is test content 1

This is test content 2

This si test content 3

Program Ended

Asynchronous read : This is test content 1  This is test content 2 This is test content 3

 

 

 

 - 파일 열기

var fs = require('fs');

console.log('Going to open file!');

fs.open('input.txt', 'r+', function(err, fd) {  if (err) {

return console.error(err);

}

console.log('File opened successfully!');

})

 

Going to open file!

File opened successfully!

 

 

 - 파일 정보 가져오기

 

var fs = require('fs');

fs.stat('input.txt', function(err, stats) {

if (err) {

return console.error(err);

}

console.log(stats);

console.log("isFile ? " + stats.isFile());  console.log('isDirectory ? ' + stats.isDirectory());

});

 

 

 

Stats {

size: 72,

dev: 1291624364,

blocks: undefined,

mode: 33206,

atime: 2017-10-14T05:21:39.721Z,

nlink: 1,

mtime: 2017-10-14T05:22:08.584Z,

uid: 0,

ctime: 2017-10-14T05:22:08.584Z,

gid: 0,

birthtime: 2017-10-14T05:21:39.721Z }

rdev: 0,

isFile ? true

blksize: undefined,

isDirectory ? false

ino: 1688849860279306,

 

 

 

 

 - 파일 쓰기

 

 

var fs = require('fs');

fs.writeFile('output2.txt', 'Write File Test String', function(err) {

if (err) return console.error(err);  console.log("Data Written successfully!");

fs.readFile('output2.txt', function(err, data) {  if (err) return console.error(err);

console.log("Asynchronous read : " + data.toString());

});

});

 

 

Data Written successfully!

Asynchronous read : Write File Test String

 

 

 

 

 - 파일 읽기

var fs = require('fs');  var buf = new Buffer(1024);

fs.open('input.txt', 'r+', function(err, fd) {  if (err) return console.error(err);  console.log('File opened successfully');

fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) {  if (err) console.error(err);

console.log(bytes + 'bytes read');  if (bytes > 0) {

console.log(buf.slice(0, bytes).toString());

}

});

});

 

File opened successfully

72bytes read

This is test content 1  This is test content 2  This is test content 3

 

 

 

 

 - 파일 닫기

 var fs = require('fs');  var buf = new Buffer(1024);

fs.open('input.txt', 'r+', function(err, fd) {  if (err) return console.error(err);  console.log('File opened successfully');

fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) {  if (err) console.error(err);

console.log(bytes + 'bytes read');

if (bytes > 0) {

console.log(buf.slice(0, bytes).toString());

}

fs.close(fd, function(err) {  if (err) console.log(err);

console.log('File closed successfully!');

});

});

}); 

 

 

 

 

 

 - 파일 비우기

var fs = require('fs');  var buf = new Buffer(1024);

fs.open('input.txt', 'r+', function(err, fd) {  if (err) return console.error(err);  console.log('File opened successfully');  fs.truncate(fd, 10, function(err) {

if (err) console.log(err);  console.log('File truncated successfully');

fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) {

//읽기 처리 코드 생략

});

});

});

 

 

 - 파일 삭제

var fs = require('fs');  fs.unlink('input.txt', function(err) {

if (err) return console.error(err);

console.log('File deleted successfully');

});

 

 

 - 디렉터리 생성

var fs = require('fs');

fs.mkdir('test', function(err) {

if (err) return console.error(err);  console.log('Directory created successfully!');

});

 

 

 - 디렉터리 내용 보기

var fs = require('fs');

fs.readdir("c:/windows", function(err, files) {  if (err) return console.error(err);  files.forEach(function(file) {  console.log(file);

});

})

 

 

 

 - 디렉터리 삭제

var fs = require('fs');

fs.rmdir('test', function(err) {

if (err) return console.error(err);  console.log("Directory removed successfully!");

})

 

 

 

 

 

 

 

 

'자바' 카테고리의 다른 글

Node.js 강좌 자료] Blocking Code  (0) 2017.11.19
Node.js 강좌 자료] Callback?  (0) 2017.11.19
Node.js 강좌 자료] File System  (0) 2017.11.19
Node.js 강좌 자료] crypto 모듈  (0) 2017.11.19
Node.js 강좌 자료] until 모듈  (0) 2017.11.19

+ Recent posts