[JS/Node] Node.js

KIM DA MI·2023년 3월 20일
0

JS/Node

목록 보기
2/2
post-thumbnail

Node.js


  • Node.js는 "비동기 이벤트 기반 JavaScript 런타임"이다.
  • Node.js는 Chrome V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경(Runtime Environment)으로 주로 서버 사이드 애플리케이션 개발에 사용되는 소프트웨어 플랫폼이다.
  • Node.js는 브라우저 외부 환경에서 자바스크립트 애플리케이션 개발에 사용되며 이에 필요한 모듈, 파일 시스템, HTTP 등 Built-in API를 제공한다.

Node.js 내장 모듈을 사용하는 방법


  • Node.js 내장 모듈 (Node.js built-in modules)에는 다양한 모듈이 존재한다.

  • 모든 모듈은 모듈을 사용하기 위해 불러오는 과정이 필요하다.
    브라우저에서 다른 파일을 불러올 때에는 다음과 같이 <script> 태그를 이용한다.

    <script src="불러오고싶은_스크립트.js"></script>
    • HTML에서 JavaScript 파일을 불러오는 script 태그

  • Node.js 에서는 JavaScript 코드 가장 상단에 require 구문을 이용하여 다른 파일을 불러온다.

    const fs = require('fs'); // 파일 시스템 모듈을 온다
    const dns = require('dns'); // DNS 모듈을 불러온다
    
    // 이제 fs.readFile 메서드 등을 사용할 수 있다!
    • Node.js에서 다른 파일을 불러오는 require 구문

Node.js 내장 모듈 목록


File System 모듈

  • 파일을 읽거나 저장하는 기능 등을 제공하는 모듈이다.

    readFile 메서드 : 파일을 읽을 때

    writeFile 메서드 : 파일을 저장할 때


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


  • 서드 파티 모듈(3rd-party module)은 해당 프로그래밍 언어에서 공식적으로 제공하는 빌트인 모듈(built-in module)이 아닌 모든 외부 모듈을 일컫는다.
  • 예를 들어, Node.js에서 underscore는 Node.js 공식 문서에 없는 모듈이기 때문에 서드 파티 모듈이다.
  • underscore 와 같은 서드 파티 모듈을 다운로드하기 위해서는 npm을 사용해야 한다.
    npm install underscore
    • underscore 모듈을 설치한다.

  • node_modules에 underscore가 설치되면 Node.js 내장 모듈을 사용하듯 require 구문을 통해 underscore 를 사용할 수 있다.
    const _ = require('underscore');
    • Node.js의 3rd-party underscore를 사용할 수 있다.



Node.js 공식 문서 가이드


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

  • 메서드 fs.readFile 은 로컬에 존재하는 파일을 읽어온다.
    16.x 버전 기준으로, fs.readFile의 공식 API 문서에 안내되어 있는 항목을 설명한다.
    공식 문서와 이 내용을 동시에 놓고 보면, 공식 문서의 구성을 이해하는 데 도움이 된다.

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

  • 메서드 fs.readFile 은 비동기적으로 파일 내용 전체를 읽는다.
    이 메서드를 실행할 때에는 전달인자 세 개를 받는다.

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

  • path에는 파일 이름을 전달인자로 받는다.
    네 가지 종류의 타입을 넘길 수 있지만 일반적으로 문자열(<string>)의 타입을 받는다.
  • 다음은 'etc/passwd' 라는 파일을 불러오는 예제이다.
    fs.readFile('/etc/passwd', ..., ...)

🔹 options \<Object> | \<string>

  • 대괄호로 감싼 두 번째 전달인자 options는 넣을 수도 있고, 넣지 않을 수도 있다.
    대괄호는 선택적 전달인자를 의미한다.

  • options는 문자열 또는 객체 형태로 받을 수 있다.

    • 두 번째 전달인자 options에 문자열을 전달한 경우

      // /etc/passwd 파일을 'utf8'을 사용하여 읽는다.
      fs.readFile('/etc/passwd', 'utf8', ...);
      • 문자열로 전달할 경우 인코딩을 받는다.
      • 'utf8' 을 두 번째 전달인자로 받는 것을 확인할 수 있다.
    • 두 번째 전달인자 options에 객체를 전달한 경우

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

🔹 callback \<Function>

  • err \<Error> | \<AggregateError>

  • data \<string> | \<Buffer>

  • 콜백 함수를 전달한다.
    파일을 읽고 난 후에 비동기적으로 실행되는 함수이다.

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

    fs.readFile('test.txt', 'utf8', (err, data) => {
      if (err) {
        throw err; // 에러를 던진다.
      }
      console.log(data);
    });
    • 메서드 fs.readFile로 파일의 데이터를 읽을 수 있다.

0개의 댓글