- Node.js 내장 모듈을 사용할 수 있다.
- 서드 파티 모듈 (3rd-party module)을 활용할 수 있다.
- Node.js 공식 문서를 활용하여 fs.readFile을 이용할 수 있다.
"비동기 이벤트 기반 JavaScript 런타임"
모든 모듈은 '모듈을 사용하기 위해 불러오는 과정'이 필요
JavaScript 코드 가장 상단에 require
구문을 이용하여 다른 파일을 불러온다.
const fs = require('fs'); // 파일 시스템 모듈을 불러옴 const dns = require('dns'); // DNS 모듈을 불러옴 // 이제 fs.readFile 메서드 등을 사용할 수 있다!
파일을 읽거나 저장하는 기능 등을 제공하는 Node.js 내장 모듈 File System
모듈
파일을 읽을 때는 readFile
메서드, 파일을 저장할 때는 writeFile
메서드를 사용
서드 파티 모듈(3rd-party module)
해당 프로그래밍 언어에서 공식적으로 제공하는 빌트인 모듈(built-in module)이 아닌 모든 외부 모듈
예를 들어, Node.js에서 underscore
는 Node.js 공식 문서에 없는 모듈이기 때문에 서드 파티 모듈이라고 할 수 있다.
underscore
와 같은 서드 파티 모듈을 다운로드하기 위해서는 npm
을 사용한다.
(ex. npm install underscore
➡ node_modules 폴더에 다운된다.)
다운 후에는 Node.js 내장 모듈을 사용하듯 require
구문을 통해 사용할 수 있다.
(ex. const _ = require('underscore');
)
메서드 fs.readFile 은 비동기적으로 파일 내용 전체를 읽는다.
이 메서드를 실행할 때에는 전달인자 세 개를 받는다.
\<string> | \<Buffer> | \<URL> | \<integer>
<string>
) 타입<string>
| <Buffer>
| <URL>
| <integer>
// 'etc/passwd' 라는 파일을 불러오는 예제 fs.readFile('/etc/passwd', ..., ...)
\<Object> | \<string>
// 두 번째 전달인자 options에 문자열을 전달한 경우 // `/etc/passwd` 파일을 'utf8'을 사용하여 읽는 코드 fs.readFile('/etc/passwd', 'utf8', ...); // 두 번째 전달인자 options에 객체를 전달한 경우 let options = { encoding: 'utf8', // utf8 인코딩 방식으로 연다 flag: 'r' // 읽기 위해 연다 } // `/etc/passwd` 파일을 options를 사용하여 읽는다 fs.readFile('/etc/passwd', options, ...)
\<Function>
콜백 함수를 전달한다. 파일을 읽고 난 후에 비동기적으로 실행되는 함수이다.
콜백 함수에는 두 가지 매개변수가 존재.
에러가 발생하지 않으면 err
는 null
이 되며, data
에 문자열이나 Buffer
라는 객체가 전달된다. ( data
는 파일의 내용 )
data
에 문자열이 전달되는 경우는 어떤 경우일까?