반응형

오늘부터 Node.js 공부를 시작하겠습니다


https://tacademy.sktechx.com/live/player/onlineLectureDetail.action?seq=71


이 강의를 들으면서 정리한 것을 포스팅하겠습니다




node.js


document를 잘 봐야한다


API 문서를 보고 코드작성 해보기


Node,js


2009년 Ryan Dahl


자바스크립트 언어


크롬 V8엔진


node.js의 특징



싱글쓰레드


비동기 I/O -싱글쓰레드

동기식이면 멀티쓰레드기반으로 구동



이벤트 기반


네트워크 어플리케이션의 서버에서 잘쓰인다


------------------------


비동기 I/O


시간이 걸리는 I/O

 

 - 하드 디스크 접근

 - 데이터베이스 서버

 - 네트워크를 이용해서 다른 서비스를 접근


I/O 동작이 끝날떄까지 대기 :동기식


I/O 동작이 끝날떄까지 대기하지 않음: 비동기식

(성능상으로 우수)



apache(동기-멀티쓰레드) vs Nginx(비동기)


node.js의 장점


싱글쓰레드로 작성


비동기 I/O


간단한 구조의 경량프레임워크와 풍부한 라이브러리


서버와 클라이언트에서 사용하는 언어가 같다


node.js 권장 분야


- 실시간 sns 서비스


- 데이터 중심의 서비스


- IOT 기기 연동


아키텍처


상위레벨 javaScript


로우레벨 - C


 - 바인딩

 - v8엔진

 - libev: Event

 - libeio: I/O


프로그래밍 모델


동기



- A실행 A결과 B실행 B결과

순차적



비동기


- A실행 B실행

B결과 A결과


실행결과가 끝날떄까지 기다리지안흔다


동기식 코드


var fs= require('fs'); 1

var content= fs.readFileSync("readme.txt","utf8"); 2

console.log(content); 3

console.log("Reading file..."); 4



비동기식 코드


var fs= require('fs'); 1

fs.readFile("readme.txt","utf8",function(err,content){ 2

console.log(content);}); 4

console.log("Reading file..."); 3



실행순서를 잘봐야한다


동기식 함수 구현과 사용


동기식 함수 구현

function add(i,j){


return i+j;

}


동기식 함수 사용

var result = add(1, 2);

console.log(‘Result : ‘, result); 




비동기식 함수 구현


function add(i, j, callback) {

 var result = i + j;

 callback(result);

}


비동기식 함수 사용

add(1, 2, function(result) {

 console.log(‘Result : ‘, result);

}); 



콜백을 이용한 파일 읽기


fs.readFile('textfile.txt', 'utf8', function(err, text) {

 console.log(‘Read File Async', text);

});


콜백함수형태


1. 비동기 함수의 에러 처리

 

 - 콜백 함수의 파라미터로 처리


2. 대부분 비동기 API


callbackFunc(arg1, arg2, function(error, result) {

 if ( error ) {

 // 에러 처리

 return;

 }

 // 정상 처리

}




node.js 명령어


-v 버전


-e, p 스크립트평가


-c 실행하지 않고 문법체크


-r 모듈을 미리 로딩




5. document


Node.js 간단한 구조


필요한 모듈을 로딩


모듈: 다른 언어의 라이브러리에 해당



API 문서보기


Stability


   0 : Deprecated

   1 : Experimental

   2 : Stable

   3 : Locked



- 모듈로딩

  require(‘모듈 이름’)

  절대 경로 혹은 상대 경로

     var readline = require('readline');

 모듈 종류

   기본 모듈 : 미리 컴파일된 상태로 라이브러리 디렉토리 - 설치 불 필요

   확장 모듈 : npm으로 별도 설치




-모듈 로딩 - 객체 생성

?클래스

? Interface

?모듈 로딩과 객체 생성

var readline = require('readline');

var rl = readline.createInterface();


-객체 생성 함수 옵션

var rl = readline.createInterface({

 input: process.stdin,

 output: process.stdout

});


-메소드 사용

  모듈 로딩, 객체 생성 후 메소드 사용

var readline = require('readline');

var rl = readline.createInterface();

rl.setPrompt(‘>>’);



-이벤트

  이벤트 - 이벤트 핸들러

  .on([이벤트 이름], [리스너 함수])

rl.on('line', function (cmd) {

 console.log('You just typed: '+cmd);

});

  리스너 함수의 파라미터

   API 문서 참조



-모듈 함수

  객체 생성 없이 모듈에 직접 사용

var readline = require('readline');

readline.cursorTo(process.stdout, 60, 30);



Node.js 란


비동기 방식으로 자바 스크립트 언어를 이용해서 네트워크 애플리케이션

플랫폼 제작에 적합한 프레임워크


Node.js의 프로그래밍 모델

비동기 방식으로 작성하고, 콜백을 이용하는 방식으로 코드를 작성합니다.


Node.js 환경

Node.js를 다운로드해서 설치하고 개발 환경을 준비했습니다. 


Hello World

Node.js 애플리케이션을 작성하고 실행해봤습니다.


도큐먼트 보기

API 문서를 보고 모듈을 로딩하고 객체를 생성해봤습니다.

그리고 함수 실행하는 방법을 알아봤습니다



  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기