Node.js 공부하기 (2)

Coosla·2021년 1월 16일

Node.js

목록 보기
2/4
post-thumbnail

1. REPL

REPL이란?

노드에서 제공하는 코솔에서 입력한 코드를 읽고(Read), 해석하고(Eval), 결과물을 반환하고(Print), 종료할 때까지 반복(Loop)하는 것을 말합니다.

2. 모듈

모듈이란?

특정한 기능을 하는 함수나 변수들의 집합입니다.

  • 모듈의 장단점

    장점

    • 모듈을 만들어 놓으면 여러 프로그램에서 모듈을 재사용할 수 있습니다.

    단점

    • 모듈이 많아지고 모듈간의 관계가 얽히면 구조 파악이 어렵습니다.

3. 노드 내장 객체

  • global 객체
    global 객체는 브라우저의 window와 같은 전역 객체입니다. 전역 객체는 모든 파일에서 접근 가능합니다.
  • console 객체
    console 객체는 디버깅을 위해 사용합니다.

    console 객체의 메서드

    .time(레이블) : .timeEnd(레이블)과 대응되어 같은 레이블을 가진 time과 timeEnd                     사이의 시간을 측정합니다.
    .log(내용, ...) : 평범한 로그를 콘솔에 표시 및 여러 내용을 동시에 표시 가능합니다.
    .error(에러 내용) : 에러를 콘솔에 표시합니다.
    .dir(객체, 옵션) : 객체를 콘솔에 표시할 때 사용합니다. 옵션으로 color와 depth가 있습니다.
    .trace(레이블) : 에러가 어디서 발생 했는지 추적할 수 있게 해줍니다.

  • 타이머 객체
    타이머 기능을 제공하는 함수로 setTimeout, setInterval, setImmediate가 있습니다.

    타이머 함수

    • setTimeout(콜백 함수, 밀리초) : 주어진 밀리초 이후에 콜백 함수를 실행합니다.
    • clearTimeout(참조변수) : setTimeout을 취소합니다.
    • setInterval(콜백 함수, 밀리초) : 주어진 밀리초마다 콜백 함수를 반복 실행합니다.
    • clearInterver(참조변수) : setInterval을 취소합니다.
    • setImmediate(콜백 함수) : 콜백 함수를 즉시 실행합니다.
    • clearImmediate(참조변수) : setImmediate를 취소합니다.
  • __filename, _dirname

    __filename과 __dirname

    __filename : 현재 파일명을 나타냅니다.
    __dirname : 현재 파일의 경로를 나타냅니다.

  • module과 exports
    module 객체는 특정한 기능을 하는 함수나 변수들의 집합입니다. 그래서 이 객체를 이용하여 모듈을 만들고 exports를 이용하여 만든 모듈을 내보낼수 있습니다. 그리고 exports를 이용하여 모듈을 만들수 있습니다.

  • process 객체
    현재 실행되고 있는 노드 프로세스에 대한 정보를 담고 있습니다.

    process 객체 속성

    .version : 설치된 노드의 버전을 가져옵니다.
    .arch : 프로세서 아키텍처 정보를 가져옵니다.
    .platform : 운영체제 플랫폼 정보를 가져옵니다.
    .pid : 현재 프로세스의 아이디입니다. 프로세스를 여러개 가질 때 구분할 수 있습니다.
    .uptime() : 프롯스가 시작된 후 흐른 시간을 출력합니다.
    .cwd() : 현재 프로세스가 실행되는 위치를 출력합니다.
    .cpuUsage() : 현재 CPU사용량을 출력합니다.
    .env : 서비스의 중요한 키를 저장하는 공간으로 사용됩니다.
    .nextTick(콜백) : 이벤트 루프가 다른 콜백 함수보다 nextTick의 콜백 함수를 우선으로
                          처리하도록 만듭니다.
    .exit(코드) : 실행 중인 노드 프로세스를 종료합니다.

4. 노드 내장 모듈 사용하기

  • os 모듈

    os 모듈 메서드

    .arch() : 프로세서 아키텍처 정보를 가져옵니다. process.arch와 동일합니다.
    .platform() : 운영체제 플랫폼 정보를 가져옵니다. process.platform과 동일합니다.
    .type() : 운영체제의 종류를 보여줍니다
    .uptime() : 운영체제 부팅 이후 흐른 시간을 보여줍니다.
    .hostname() : 컴퓨터의 이름을 보여줍니다.
    .release() : 운영체제의 버전을 보여줍니다.
    .homedir() : 홈 디렉터리 경로를 보여줍니다.
    .tmpdir() : 임시 파일 저장 경로를 보여줍니다.
    .cpus() : 컴퓨터의 코어 정보를 보여줍니다.
    .freemem() : 사용 가능함 메모리를 보여줍니다.
    .totalmem() : 전체 메모리 용량을 보여줍니다.
    .constants : 각종 에러와 신호에 대한 정보가 담겨 있습니다.

  • path 모듈

    path 모듈이란?

    path모듈은 폴더와 파일의 경로를 쉽게 조작하도록 도와주는 모듈이다.

    path 모듈이 필요한 이유

    운체제 별로 경로 구반가 다르기 때문이다. window는 \로 구분, POSIX(리눅스 등)는 /로 구분합니다.

    path 모듈 메서드

    .sep : 경로의 구분자입니다. window는 \, POSIX는 /입니다.
    .delmiter : 환경 변수의 구분자입니다. window는 세미콜론(;), POSIX는 콜론(:)입니다.
    .dirname(경로) : 파일이 위치한 폴더 경로를 보여줍니다
    .extname(경로) : 파일의 확장자를 보여줍니다.
    .basename(경로, 확장자) : 파일의 이름(확장자 포함)을 보여줍니다. 이름만 표시하고 싶다면                                   두번째 인자로 파일 확장자를 넣어줍니다.
    .parse(경로) : 파일 경로를 root, dir, base, ext, name으로 분리합니다.
    .format(객체) : path.parse()한 객체를 파일 경로로 합칩니다.
    .normalize(경로) : 구분자를 실수로 여러번 사용하거나 혼용했을 때 정상적인 경로로                        변환해줍니다.
    .isAbsolute(경로) : 파일의 경로가 정대경로인지 상대경로인지 true/false로 알려줍니다.
    .relative(기준경로, 비교경로) : 첫번째 경로에서 두번째 경로로 가는 방법을 알려줍니다.
    .join(경로, ...) : 여러 인자를 넣으면 하나의 경로로 합쳐줍니다.
    .resolve(경로, ...) : path.join과 비슷합니다. 차이점은 /를 만나면 절대경로로 인식하여 앞의                        경로를 무시합니다.

  • url 모듈

    url 모듈이란?

    인터넷 주소를 쉽게 조작하도록 도와주는 모듈입니다.

    url 모듈 메서드

    .parse(주소) : 주소를 분해 합니다.
    .format(객체) : 분해되었던 url 객체를 다시 원래 상태로 조립합니다.

    • searchParams 객체
      WHATWG 방식에서 search부분을 searchParams라는 객체로 반환합니다.

      searchParams 객체 메서드

      getAll(키) : 키에 해당하는 모든 값들을 가져옵니다.
      get(키) : 키에 해당하는 첫번째 값만 가져옵니다.
      has(키) : 해당 키가 있는지 없는지를 검사합니다.
      key() : searchParams의 모든 키를 반복기(iterator) 객체로 가져옵니다.
      value() : searchParams의 모든 값을 반복기 객체로 가져옵니다.
      append(키, 값) : 해당키를 추가합니다. 같은 키의 값이 있다면 유지하고 하나더                       추가합니다.
      set(키, 값) : append와 비슷하지만 키의 값들을 모두 지우고 새로 추가합니다.
      delete(키) : 해당 키를 제거합니다.
      toString() : 조작한 searchParams 객체를 다시 문자열로 만듭니다.

    • querystring 모듈
      기존 노드의 url방식을 사용할 때 search 부분을 사용하기 쉽게 객체로 만드는 모듈입니다.

      querystring 모듈 메서드

      .parse(쿼리) : url의 query 부분을 자바스크립트 객체로 분해합니다.
      .stringify(객체) : 분해된 query 객체를 문자열로 다시 조립합니다.

  • crypto 모듈

    crypto 모듈이란?

    다양한 방식의 암호화를 도와주는 모듈입니다.

    • 단방향 암호화

      단방향 암호화란?

      복호화(암호화된 문자열을 원래 문자열로 되돌려 놓는 것)할 수 없는 암호화 방식입니다.
      주로 해시 기법(문자열을 고정된 길이의 다른 문자로 바꾸는 방식)을 사용합니다.

      메서드

      creatHash(알고리즘) : 사용할 해시 알고리즘을 넣어줍니다.
      update(문자열) : 변환할 문자열을 넣어줍니다.
      digest(인코딩) : 인코딩할 알고리즘을 넣어줍니다. base64를 많이 사용합니다.

      취약점

      해시 기법으로 각각 다른 문자열을 암호화 했을 때 우연의 일치로 같은 문자열로 변환될 때가 있습니다.

    • 양방향 암호화

      양방향 암호화란?

      문자열을 암호화할 수 있고, 복호화 할 수 있습니다.

      메서드

      crypto.createCipher(알고리즘, 키) : 암호화 알고리즘과 키를 넣어줍니다.
      cipher.update(문자열, 일코딩, 출력 인코딩) : 암호화할 대상과 대상의 인코딩,                                                           출력 결과물을 인코딩에 넣어줍니다.
      cipher.final(출력 인코딩) : 출력 결과물의 인코딩을 넣어주면 암호화가 완료됩니다.
      crypto.createDecipher(알고리즘, 키) : 복호화할 때 사용합니다.
      decipher.update(문자열, 일코딩, 출력 인코딩) : 암호화된 문장, 그문자의 인코딩,                                                                복호화할 인코딩을 넣어줍니다.
      decipher.final(출력 인코딩) : 복호화 결과물의 인코딩을 넣어줍니다.

  • util 모듈

    util 모듈이란?

    각종 편의 기능을 모아둔 모듈입니다.

    메서드

    .deprecate(함수, 메시지) : 함수가 deprecate 처리되었음을 알려줍니다. 첫번째 인자로 넣은                                   함수를 사용했을 때 경고 메시지를 출력합니다. 경고 메시지의                                   내용은 두번째 인자에 넣습니다.
    .promisgy : 콜백 패턴을 프로미스 패턴으로 바꿔줍니다.

6. 파일 시스템 접근하기

  • fs 모듈

    fs 모듈이란?

    파일 시스템에 접근하는 모듈입니다.

    fs 모듈 메서드

    .readFile(파일경로, 함수) : 파일을 읽습니다.
    .writeFile(파일경로, 파일내용, 함수) : 파일이 없으면 생성하여 내용을 저장합니다.
    .readFileSync(파일경로, 함수) : 동기 방식으로 파일을 읽습니다.
    .writeFileSync(파일경로, 데이터, 함수) : 동기 방식으로 파일내용을 저장합니다.
    .access(경로, 옵션, 콜백함수) : 폴더나 파일에 접근할 수 있는지 체크합니다. F_OK는                                         파일 존재 여부, R_OK는 읽기 권한 여부, W_OK는 쓰기 권한                                         여부를 체크합니다. 에러발생시 에러코드는 ENOENT입니다.
    .mkdir(경로, 콜백함수) : 폴더를 만드는 메서드입니다. 이미 존재하면 에러가 발생합니다.
    .open(경로, 옵션, 콜백함수) : 파일의 아이디를 가져오는 메서드입니다. 파일이 없으면 파일을                                       생성하고 파일의 아이디를 가져옵니다. 가져온 아이디를 이용해                                       read메서드와 write메서드를 사용할 수 있습니다.
    .rename(기존경로, 새경로, 콜백함수) : 파일의 이름믈 바꾸는 메서드입니다.
    .readdir(경로, 콜백함수) : 폴더 안의 내용물을 확인할 수 있습니다.
    .unlink(경로, 콜백함수) : 파일을 지울 수 있습니다. 파일이 없으면 에러가 발생합니다.
    .rmdir(경로, 콜백함수) : 폴더를 지울 수 있습니다. 폴더 안에 파일이 있다면 에러가                                 발생합니다.
    .copyFile(읽을파일, 쓸파일, 콜백함수) : 파일을 복사합니다.

  • buffer 객체

    buffer 객체란?

    입출력을 수행하는데에 있어서 속도차이를 극복하기 위해 사용하는 임시 저장 공간입니다.

    buffer 객체 메서드

    from(문자열) : 문자열을 버퍼로 바꿀수 있습니다. length 속성을 통해 버퍼의 크기를                    알수있습니다.
    toString(버퍼) : 버퍼를 다시 문자열로 바꿀 수 있습니다.
    concat(배열) : 배열 안에 든 버퍼들을 하나로 합칩니다.
    alloc(바이트) : 바이크만큼의 빈 버퍼를 생성합니다.

  • Stream 객체

    Stream 객체란?

    입출력 기기나 프로세스, 파일 등이 어디로 가는지, 어디로 나오는지 상관없이 통일된 방식으로 데이터를 다루기 위한 개념이고 버퍼의 크기를 작게 만들어 여러 번에 나눠서 보내는 방식이라 생각하면 됩니다.

    Stream 객체 메서드

    createReadStream(파일 경로, {옵션1:값, ...}) : 스트림 방식으로 파일을 읽습니다.
    createWriteStream(파일 경로) : 스트림 방식으로 파일을 씁니다.
    pipe(스트림 객체) : 스트림끼리 연결합니다.

7. 이벤트

이벤트란?

이벤트는 사용자가 버튼을 눌러 어떠한 기능이 발생한 것을 말합니다.

이벤트 메서드

on(이벤트명, 콜백함수) : 이벤트 이름과 이벤트 발생 시의 콜백을 연결해줍니다. 연결한 동작을                                  이벤트 리스닝이라고 합니다.
addListenner(이벤트명, 콜백함수) : on과 기능이 같습니다.
emit(이벤트명) : 이벤트를 호출하는 메서드입니다.
once(이벤트명, 콜백함수) : 한 번만 실행되는 이벤트입니다.
removeAllListenners(이벤트명) : 이벤트에 연결된 모든 이벤트 리스너를 제거합니다.
removeListener(이벤트명, 리스너) : 이벤트에 연결된 리스너를 하나씩 제거합니다.
off(이벤트명, 콜백함수) : removeListener와 기능이 같습니다.
listenerCount(이벤트명) : 현재 리스너가 몇개 연결되어 있는지 확인합니다.

profile
프로그래밍 언어 공부 정리

0개의 댓글