S2 . Node.js, FS모듈

Haizel·2022년 11월 25일
0

Front-End Developer 되기

목록 보기
28/70

API란


Application Programming Interface의 줄임말로, 클라이언트가 요청한 내용에 대해 서버가 ‘사용 규칙을 제공하는 것(응답)’을 말한다.

Node.js


  • Node.js는 "비동기 이벤트 기반 JavaScript 런타임”이다. 따라서 Node.js의 경우 많은 API가 비동기로 작성되어 있다.
  • Node.js는 자바스크립트의 실행환경(=런타임)
  • fs(File System) 모듈 : PC의 파일을 읽거나 저장하는 등의 일을 할 수 있게 한다.
  • Node.js v16.14.2 Documentation
  • Node.js 파일 시스템 모듈

Node.js에서 다른 파일을 불러오는 require 구문


  • Node.js 에서는 JavaScript 코드 가장 상단에 **require** 구문을 이용해 다른 파일을 불러온다.
const fs = require('fs'); // 파일 시스템 모듈을 불러옵니다
const dns = require('dns'); // DNS 모듈을 불러옵니다

// 이제 fs.readFile 메서드 등을 사용할 수 있습니다!

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


  • 서드 파티 모듈(3rd-party module) : 해당 프로그래밍 언어에서 공식적으로 제공하는 빌트인 모듈 외의 모든 외부 모듈을 말한다.
  • 서드 파티 모듈을 다운로드하기 위해선 → npm을 사용한다.
//underscore 모듈을 설치 -> node_modules에 underscore가 설치 된다.
npm install underscore
 
//require 구문을 통해 underscore 사용 가능하다.
const _ = require('underscore');

fs.readFile 메서드 : 로컬에 존재하는 파일을 읽어온다.


fs.readFile의 공식 API 문서

구문 : fs.readFile(path[, options], callback)

  • 메서드 **fs.readFile**비동기적으로 파일 내용 전체를 읽는다. 그리고 전달인자로 3개를 받는다.

1. path \ string | \Buffer | \URL | \integer

  • path파일 이름을 전달 인자로 받는다.
  • 전달인자로는 네가지 타입 모두 가능하지만, 일반적으로 문자열(String)으로 받는다.
//`'etc/passwd' 라는 파일을 불러오는 예제
fs.readFile('/etc/passwd', ..., ...)

2. options \ Object | \string

  • options 의 대괄호는 선택적 전달인자를 의미한다. options 은 말 그대로 옵션으로, 넣을 수도, 넣지 않을 수도 있다.
  • 전달인자로는 문자열 or 객체 형태로 받을 수 있다.
    • 문자열을 전달할 경우 → 인코딩을 받는다.
**1. 두 번째 전달인자 options에 문자열을 전달한 경우**
// /etc/passwd 파일을 'utf8'을 사용하여 읽는다.
fs.readFile('/etc/passwd', 'utf8', ...);let options = {
  encoding: 'utf8', // utf8 **인코딩 방식으로 연다.**
  flag: 'r' // 읽기 위해 연다.
}

2. 두 번째 전달인자 options에 객체를 전달한 경우
// /etc/passwd 파일을 'utf8'을 사용하여 읽는다.
fs.readFile('/etc/passwd', options, ...)

3. callback \Function

  • 매개변수 err \Error | \AggregateError
  • 매개변수 data \string | \Buffer
  • 콜백함수는 파일을 읽고 난 후에 비동기적으로 실행되는 함수이다.
  • 에러가 발생하지 않으면
  1. errnull 이 되고,
  2. data 에 문자열(string)이나 Buffer라는 객체가 전달된다.
fs.readFile('test.txt', 'utf8', (err, data) => {
  if (err) {
    throw err; // 에러를 던집니다.
  }
  console.log(data);
});
profile
한입 크기로 베어먹는 개발지식 🍰

0개의 댓글