일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ...args
- .toLocalString()
- 1주차
- 2020년 준비
- 2주차
- 4주차
- 5주차
- array
- array method
- async
- authentication
- AWS
- codestates
- commit
- Cookie
- CSS
- Data Structre
- Data Structure
- DataSturcutre
- Date.now()
- DB에 사진 저장하기
- Dev log
- DOM
- EC2
- EC2로 웹 만드는 방법
- EC2와 S3 연결하기
- element
- Es5
- ES6
- event 객체
- Today
- Total
souvenir
20.08.10 TIL_node.js module 사용 본문
Async and promise_Part2
node.js module 사용법
브라우저에서 사용할 수 있는 비동기 흐름은 타이머 혹은 DOM 이벤트와 관련된 상황으로 다소 한정적이지만, node.js의 경우 많은 부분의 API가 비동기로 작성되어 있음. node.js 소개 문서의 첫 단락은 "비동기 이벤트 기반 자바스크립트 런타임"이라는 정의로부터 시작함.
node.js 내장 모듈을 사용하는 방법
: 가장 먼저는 해당 모듈을 불러오는 과정이 필요함.
1) 브라우저의 경우
<script src="불러오고싶은_스크립트.js"></script>
등으로 불러올 수 있음.
2) node.js의 경우
const fs = require('fs') // 파일 시스템 모듈을 불러옵니다
const dns = require('dns') // DNS 모듈을 불러옵니다
// 이제 fs.readFile 메소드 등을 사용할 수 있습니다!
이와 같이 require 구문을 상단에 작성하면서 불러올 수 있음.
3rd-party 모듈을 사용하는 방법
즉 node.js 공식 문서에서 존재하지 않는 모듈을 사용해야하는 경우를 의미한다.
당연히 node.js에는 없기에 따로 설치부터 해야하는데 이는 npm을 통해 설치할 수 있고, 이후에는 동일하게 require 구문을 이용해 불러올 수 있다.
예시) underscore 모듈을 사용한다 가정한 경우
$ npm install underscore //npm으로 설치
const _ = require('underscore'); //require로 호출
fs.readFile을 통해 알아보는 node.js 공식 문서 가이드
fs.readFile은 로컬 파일을 읽어오는 메소드(fs가 node.js의 내장 모듈임)
fs.readFile(path[, options], callback)
fs.readFile 메소드 비동기적으로 파일 내용 전체를 읽습니다. 메소드를 실행할 때 인자 세 개를 넘길 수 있습니다.
Asynchronously reads the entire contents of a file.
- path <string> | <Buffer> | <URL> | <integer>
path에는 파일 이름을 인자로 넘길 수 있습니다. 네 가지 종류의 타입을 넘길 수 있지만 보통은 문자열(<string>)로 넘깁니다.
filename or file descriptor
다음은 /etc/passwd 라는 파일을 불러오는 예제입니다.
fs.readFile('/etc/passwd', ..., ...)
- options <Object> | <string>
대괄호로 감싼 두번째 인자 options는 넣을 수도 있고, 넣지 않을수도 있습니다.
대괄호는 선택적 인자를 의미합니다. 공식 문서에서도 인자를 세 개를 넣는 경우와, 두 개를 넣는 경우를 예제와 함께 소개하고 있습니다.
options는 객체 형태 또는 문자열로 넘길 수 있습니다. 문자열로 전달할 경우 인코딩을 넘깁니다. (두번째 예제 참고, 'utf8'로 넘기는 것을 확인할 수 있습니다.)
If options is a string, then it specifies the encoding:
let options = {
encoding: 'utf8', // UTF-8이라는 인코딩 방식으로 엽니다
flag: 'r' // 읽기 위해 엽니다
}
// /etc/passed 파일을 옵션을 사용하여 읽습니다.
fs.readFile('/etc/passwd', options, ...)
- callback <Function>
- err <Error>
- data <string> | <Buffer>
콜백 함수를 넘깁니다. 파일을 읽고 난 후에 비동기적으로 실행되는 함수입니다.
콜백 함수에는 두가지 파라미터가 존재합니다. 에러가 발생하지 않으면 err는 null 이 되며, data에 문자열이나 Buffer라는 객체가 전달될 것입니다. data 는 파일의 내용입니다.
질문: data 에는 문자열이나 Buffer가 전달됩니다. 어떤 경우에 문자열로 전달되는 것일까요?
: option에서 인코딩을 설정하지 않으면 인코딩이 되지 않은 상태로 출력을 하게 됨.
ex)
//시험.js
const fs = require('fs') // 파일 시스템 모듈을 불러옵니다
fs.readFile('test.txt', 'utf8', (err, data) => {
if (err) {
throw err; // 에러를 던집니다.
}
console.log(data);
});
//test.txt
fs module을 이용하여 test.txt를 읽고 있습니다.
이 파일은 시험.js를 통해 실행됩니다.
위와 같은 두 파일은 만들고, 시험.js파일을 실행하면 test.txt의 내용을 읽음
그러나 optional에 utf8을 입력하지 않으면 console.log(data)에서 data가 인코딩 되지 않아 Buffer로 출력이 됨.
Buffer 란?
버퍼는 흔히 동작 속도가 크게 다른 두 개의 장치(예컨대 중앙 처리 장치와 단말 장치) 간의 인터페이스로 이용되며, 속도차를 조정하기 위하여 이용되는 「일시적인 기억 영역」을 가리킨다.(출처 : 컴퓨터인터넷IT용어대사전)
여기서는 인코딩되기 전에 16진법으로 표현된 객체 자체를 의미하는 것으로 보인다.
'2020년 > TIL(Today I Learn)' 카테고리의 다른 글
코드스테이츠 IM 코스를 마치며 (0) | 2020.11.10 |
---|---|
20.09.09_Authentication(인증) (0) | 2020.09.17 |
20.08.10_Async & Callback & Promise (0) | 2020.08.11 |
20.08.03 Time Complex 정리 (0) | 2020.08.11 |
20.07.28_문제 오답 노트 (0) | 2020.07.28 |