ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • node.js, module
    Note 2020. 11. 16. 22:14

    node.js

    node.js는 chrome v8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임

     

    런타임: 프로그래밍 언어가 구동되는 환경

     

    자바스크립트를 컴파일 해주는 엔진으로 빌드 된 자바스크립트가 구동 중인 환경

    예전에는 자바스크립트 런타임이 브라우저 밖에 존재하지 않았는데 node.js가 등장하였다.

     

    node.js를 이용하여 서버를 구성할 수 있고, npm으로 모듈 관리나 웹팩과 같은 CLI를 구동할 수 있다.

     

    장점

    • 자바스크립트를 동일하게 사용해서 서버단 로직을 처리할 수 있고 새로운 언어를 습득하지 않고도 자바스크립트를 활용해 서버 기술을 빨리 개발할 수 있음
    • 이벤트 기반 비동기방식이라 서버 무리가 적음
    • npm(node package manager)을 통한 다양한 모듈(패키지) 제공, npm을 이용해 자신이 필요한 라이브러리와 패키지를 검색해서 설치하고 사용할 수 있기 때문에 개발 속도와 효율성이 크게 향상

     

    단점

    • 이벤트 기반 비동기방식이라 서버단 로직이 복잡한 경우 콜백함수의 늪에 빠질 수 있다.
    • 코드를 순차적으로 실행하는 것이 아니라 비동기 방식으로 이벤트를 보내고, 응답이 오면 처리하는 방식이기 때문에 java 개발을 했던 방식으로 설계하고 프로그래밍하면 큰 문제가 발생한다. 

     

     

    모듈

    건축으로부터 비롯된 모듈이라는 단어

    어떤 기능을 떼서 조립할 수 있는 형태로 만든 부분을 말한다. 

     

    fs(File System) module

    파일을 읽거나 저장하는 등의 일을 할 수 있게 돕는 node.js의 한 부분

     

    무엇이든 간에 모듈을 사용하기 위해서는 이를 불러오는 과정이 필요하다.

    브라우저에서는 다음과 같이 <script> 태그를 이용했다면,

    <script src= "불러오고싶은_스크립트.js" ></script>

     

    node.js 에서는 자바스크립트 코드 가장 상단에 require 구문을 이용하는 것으로 시작한다.

    const fs = require('fs') // 파일 시스템 모듈을 불러온다
    const dns = require('dns') // DNS 모듈을 불러온다
    
    // 이제 fs.readFile 메소드 등을 사용할 수 있다~~~!!

     

    3rd-party 모듈을 사용하는 방법

    3rd-party라는 용어는 프로그래밍 세계에서 공식적으로 제공하는 것이 아닌 다른 모든 "제3자"의 것을 의미한다. node.js 문서에 존재하지 않는 것은 공식적으로 제공하는 것이 아니므로 나머지는 전부 3rd-party라고 할 수 있다.

     

    예를 들어, node.js에서 underscore를 사용한다고 가정하자. 이때에는 모듈을 다운로드하기 위해 npm을 이용해야 한다.

    다음과 같이 underscore를 설치할 수 있다.

    $ npm install underscore

     

    이제 nude_modules에 underscore가 설치되었으니, node.js 내장 모듈을 사용하듯 require 구문을 통해 underscore를 사용할 수 있다.

    const _ = require('underscore');

     

    fs.readFile을 통해 알아보는 node.js 공식 문서 가이드

    fs.readFile은 로컬 파일을 읽어오는 메소드

    nodejs.org/dist/latest-v12.x/docs/api/fs.html#fs_fs_readfile_path_options_callback

     

    File system | Node.js v12.19.0 Documentation

     

    nodejs.org

    fs.readFile(path[, options], callback)

    fs.readFile 메소드는 파일의 전체 내용을 비동기적으로 읽는다. 메소드를 실행할 때 인자 세 개를 넘길 수 있다.

     

    path <string> | <Buffer> | <URL> | <integer>

    path에는 파일 이름을 인자로 넘길 수 있다. 네 가지 종류의 타입을 넘길 수 있지만 보통은 문자열(<string>)로 넘긴다.

     

     

    /etc/test라는 파일을 불러오는 예제

    fs.readFile('/etc/test', ..., ...)

     

    options <Object> | <string>

    대괄호로 감싼 두 번째 인자 options는 넣을 수도 있고, 넣지 않을 수도 있다. 대괄호는 선택적 인자를 의미한다. 공식 문서에서도 인자를 세 개를 넣는 경우와, 두 개를 넣는 경우를 예제와 함께 소개하고 있다. options는 객체 형태 또는 문자열로 넘길 수 있습니다. 문자열로 전달할 경우 인코딩을 넘긴다. (두 번째 예제 참고, 'utf8'로 넘기는 것을 확인)

    let options = {
      encoding: 'utf8', // UTF-8이라는 인코딩 방식으로 연다
      flag: 'r' // 읽기 위해 연다
    }
    
    // /etc/test 파일을 옵션을 사용하여 읽는다
    fs.readFile('/etc/test', options, ...) 

     

    callback <Function>

    - err <Error>

    - data <string> | <Buffer>

     

    콜백 함수를 넘긴다. 파일을 읽고 난 후에 비동기적으로 실행되는 함수

    콜백 함수에는 두 가지 파라미터가 존재한다. 에러가 발생하지 않으면 errnull 이 되며, data에 문자열이나 Buffer라는 객체가 전달될 것이다. data는 파일의 내용이다.

     

    fs.readFile('test.txt', 'utf8', (err, data) => {
      if (err) {
        throw err; // 에러를 던진다
      }
      console.log(data);
    });

    'Note' 카테고리의 다른 글

    BMP, JPG, PNG  (0) 2020.11.17
    HTTP 응답 코드  (0) 2020.11.16
    HTTP 프로토콜  (0) 2020.11.12
    Asynchronous & Promise  (0) 2020.11.10
    Ajax, SPA  (0) 2020.11.09

    댓글