As an asynchronous event-driven JavaScript runtime
=> 비동기 이벤트 기반 자바스트립트 런타임
Node.js is designed to build scalable network applications
=> Node.js는 확장가능한 네트워크 어플리케이션으로 디자인 되었다
Node.js는 로컬 환경에서 자바스크립트를 실행할 수 있는 자바스크립트 런타임이다.
Node.js는 브라우저에서 불가능한 몇 가지 일이 가능하다
모듈이란?
건축으로부터 비롯된 모듈이라는 단어는, 어떤기능을 조립할 수 있는 형태로 만든 부분이다.
ex) fs(File System)모듈은 PC의 파일을 읽거나 저장하는 등의 일을 할 수 있게 도와준다.
Node.js v14.17.6 documentation
fs.readFile 모듈
메소드 fs.readFile 은 로컬에 존재하는 파일을 읽어온다.
fs.readFile(path[, options], callback)
메소드 fs.readFile 은 비동기적으로 파일 내용 전체를 읽는다.
이 메소드를 실행할 때에는 인자 세 개를 넘길 수 있다.
path \<'string'> | \<'Buffer'> | \<'URL'> | \<'integer'>
path에는 파일 이름을 인자로 넘길 수 있다. 네 가지 종류의 타입을 넘길 수 있지만 일반적으로 문자열()의 타입으로 넘긴다.
options \<'Object'> | \<'string'>
대괄호로 감싼 두 번째 인자 options는 넣을 수도 있고, 넣지 않을 수도 있다.
대괄호는 선택적 인자를 의미한다.
options는 객체 형태 또는 문자열로 넘길 수 있다. 문자열로 전달할 경우 인코딩을 넘긴다.
ex) 'utf8' 을 사용 (글자를 표현하는 방식 중 하나)
utf8 - 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나
callback \<'Function'>
콜백 함수를 전달, 파일을 읽고 난 후에 비동기적으로 실행되는 함수
콜백 함수에는 두 가지 파라미터가 존재, 에러가 발생하지 않으면 err 는 null 이 되며, data 에 문자열이나 Buffer 라는 객체가 전달된다. data 는 파일의 내용이다.
질문: data 에는 문자열이나 Buffer 가 전달됩니다. 어떤 경우에 문자열로 전달되는 것일까?
써드 파티 모듈(3rd-party module)은 해당 프로그래밍 언어에서 공식적으로 제공하는 빌트인 모듈(built-in module)이 아닌 모든 외부 모듈을 말한다.
예를 들어, Node.js에서 underscore는 Node.js 공식문서에 없는 모듈이기 때문에 써드 파티 모듈이다.
써드 파티 모듈은 npm을 통하여 따로 설치 후 사용이 가능하다