노드 시작하기

노드 시작하기

노드 서버를 만들 일이 생겼습니다. 700페이지짜리 두껍고 무서운 책을 한권 샀습니다. 이름도 무려 Node.js 교과서.

그래도 뷰 공부할때보다는 확실히 덜 막막하고, 서버는 처음 개발해보는거라 약간 설레는 마음이 있습니다.

구입한 책은 Node.js 교과서 - 길벗출판사 .

노드란?

Node.js는 Chrome V8 Javascript엔진으로 빌드된 Javascript 런타임이다.

서버로서의 노드

  • 노드의 가장 큰 특징 : 1) 싱글스레드 2) 논-블로킹 모델
  • 노드를 서버로 사용할때의 장단점
    • 노드는 IO 처리를 잘한다(논블로킹 방식으로 처리).
    • 하지만 노드는 CPU부하가 큰 작업에는 적합하지 않다. >> 작성한 코드 전체가 스레드 하나에서 처리되기 때문

따라서 노드는 개수는 많지만 크기는 작은 데이터를 실시간으로 주고받는 데에 적합하다.

+) 노드에서 멀티스레드 사용이 불가능한건 아닌듯. 노드12에서 안정화된 워커스레드 기능으로 멀티스레딩 작업 가능하다고 한다.

+) 당연히 그래도 그냥 C++, Ruby, Go에 비해선 느리다.

  • 노드에는 웹서버가 내장되어 있다. 따라서 nginx, Apache와 같은 별도 웹서버를 설치할 필요가 없이 그냥 내장 웹서버 사용할 수 있다.
  • 물론 나중에 서버 규모가 커지면 nginx같은 별도 웹서버를 노드 서버와 연결해야 한다.

REPL

  • 입력한 코드를 읽고, 해석하고, 결과를 반환하고, 종료할때까지 반복한다고 해서 REPL(Read Eval Print Loop) 라고 부른다.
  • node의 REPL도 간단하게 터미널에 node 쳐서 실행해볼 수 있다.
  • 종료하려면 ctrl+c 두번, 혹은 .exit 입력하면 된다.

모듈화

1
2
3
4
5
6
7
// var.js
const odd = 'odd num';
const even = 'even num';

module.exports = {
odd, even
}
  • module.exports로 파일의 객체들을 모듈화 후 export함으로써, var.js 파일은 모듈로서 기능한다.

  • require 함수로 불러온다.

    1
    2
    3
    4
    5
    6
    // func.js
    const { odd, even } = require('./var');

    function chkNum(n) => { return n % 2 ? odd : even }

    module.exports = chkNum;
    1
    2
    3
    4
    5
    6
    7
    8
    // index.js
    const { odd, even } = require('./var');
    const chkNum = require('./func');

    function chkStrNum(s) => { return s.length % 2 ? odd : even }

    console.log(chkNum(10)); // even num 출력
    console.log(chkStrNum('hello')); // odd num 출력

노드 내장객체

노드는 내장객체로 window와 document가 없다!

  1. global
  2. console
  3. 타이머
  4. module, exports, require
  5. process

노드 내장모듈

  1. os : 운영체제 정보를 가져온다
  2. path : 폴더와 파일 경로를 조작한다
  3. url : 인터넷 주소를 조작한다
  4. querystring : url의 쿼리부분을 사용하기 쉽게 객체로 만드는 모듈
  5. crypto : 다양한 방식의 암호화를 도와주는 모듈
  6. util : 다양한 편의 기능을 모아둔 모듈
  7. fs : 파일시스템에 접근하는 모듈

댓글