본문 바로가기
서버 개발

Node.js 이해하기

by 현댕5697 2021. 4. 19.
반응형

Node.js는 쉽게 말해 웹브라우저 바깥의 환경에서도 javascript가 동작할 수 있게 하는 프레임워크이다.

 

✨ 특징

- 브라우저 밖에서 js 코드를 실행할 수 있도록 해준다.

- 크롬 브라우저에서 사용하는 것과 같은 V8 엔진을 사용한다.

- 이벤트 기반의 비동기 I/O 프레임워크이다.

- commonJS 를 구현한 모듈 시스템이다.

- 싱글 스레드를 기반으로 동작한다.

 

 

👍 장점

- 비동기 I/O 프레임워크이다.

서버의 경우에는 I/O를 빈번하게 사용한다. (ex: DB로 부터 데이터 읽어오기, 수정하기...)

그래서 비동기 I/O 라는 것이 큰 장점이 된다.

- 그리고 클라이언트에서 사용하는 언어인 js로 작성 가능하다.

- 간단한 구조로 구성된 프레임워크이다.

- 다양한 라이브러리(모듈)가 존재한다.

 

 

📑 모듈

1. 로딩 위치

- 기본 모듈: Node.js 라이브러리 디렉토리 내부

- 확장 모듈: node_modules 디렉토리 내부

   → npm을 사용하여 별도로 설치해야 한다.

 

2. 사용법

require('모듈 이름'): 모듈 로딩

createInterface(options): 객체 생성

var readline = require('readline');
var rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

 

3. 이벤트들링

1) 이벤트의 예: 

- 클라이언트의 접속 요청

- 소켓에 데이터 도착

- 파일 오픈/읽기 완료 등..

-> 비동기로 처리해준다. listener 함수를 사용한다!

 

2) on과 once의 차이점?

rl.on('line', (cmd) => {
	console.log('line')
});

rl.once('line', (cmd) => {
	console.log('line')
});

- on: 이벤트가 발생할 때마다 listener 함수가 동작

- once: 이벤트가 처음 발생했을 때 listener 함수가 한 번만 동작

 

3) 커스텀 이벤트

var customEvent = new event.EventEmitter();

customEvent.on('tick', ()=>{
	console.log('custom event');
});

customEvent.emit('tick');
var Person = function (){};
// 상속
var util = require('util');
var eventEmitter = require('events').eventEmitter;
util.inherits(Person, eventEmitter);

// 객체
var p = new Person();
p.on('howAreYou', ()=>{
	console.log('fine thank you');
});

// 이벤트 발생
p.emit('howAreYou')

 

4) 에러 처리

emitter.on('event', (error, result)=>{
    if(error){
    	// error handling
    }
    else{
    
    }
});

 


 

* 본 게시물은 Tacademy의 강의 영상을 참고하여 작성되었습니다.

tacademy.skplanet.com/live/player/onlineLectureDetail.action?seq=71

 

Node.js 프로그래밍 | T아카데미 온라인강의

Node.js를 이용해서 모바일 서비스에 필요한 서버 작성하는 방법을 다룹니다. 비동기 I/O와 이벤트 기반의 자바 스크립트와 Node.js 아키텍처 구조, Node.js 코어..

tacademy.skplanet.com

 

반응형

'서버 개발' 카테고리의 다른 글

개발 방법론에 대해 알아보자  (0) 2021.05.16
OAuth로 구글 로그인을 구현해보자  (0) 2021.05.08
MongoDB 연결하기  (0) 2021.04.21
Express란 무엇일까?  (0) 2021.04.20
JSON과 XML에 대해 알아보자  (0) 2021.04.19

댓글