반응형
Node 파일시스템 내장 모듈인 fs 는 파일을 읽고 쓸수 있는 라이브러리 입니다.
'use strict';
const fs = require('fs');
fs.readFile('test.txt', 'utf-8', (err, data) => {
if (err) return console.error(err);
console.log(data);
});
const content = 'something to do list';
fs.writeFile('test1.txt', content, (err) => {
if (err) return console.error(err);
});
해당 코드는 text.txt 파일을 있으면 읽어서 console.log() 로 출력을 해주고 text1.txt 파일을 something to do list 라는 데이터를 입력후 파일을 생성하는 코드입니다.
하지만 실무에서는 다양한 요구사항을 반영하기 위해 코드를 가독성있게 작성해야합니다.
해당코드의 개선할점은 아래와 같습니다.
- 파일을 쓰고 쓴파일을 읽어내는 코드를 하나의 함수안에서 해결할 필요가 보입니다.
- event loop 구조를 이해 했다면 async await 시 queue 에 대이터가 어떤 순서로 실행이 되는지 확인해보고 테스트 해본다
- async await 를 사용하기 위해 return 받는 내용을 promise 구조로 설정하고 에러를 잡기 위해 try catch 문을 사용한다
위와 같은 개선점을 반영한 코드가 아래 코드 입니다.
'use strict';
const fs = require('fs');
const { promisify } = require('util');
const read = promisify(fs.readFile);
const write = promisify(fs.writeFile);
const writeAndread = async (data = ' ') => {
try {
await write('text12.txt', data);
return await read('text12.txt', 'utf-8', (err, data) => {
if (err) return err;
console.log(data);
});
} catch (e) {
console.error(e);
}
};
writeAndread('여기는 테스트 입니다.');
fs 모듈에 작성한 파일을 읽어오는것을 순서대로 실행하기 위해 util 모듈에서 비구조화 객체 promisify 적용하여 async await 사용할수 있게 하였습니다.
반응형
'개발이야기 > Node.js' 카테고리의 다른 글
macOS 에서 docker 로 redis 설치후 node.js 로 연동해기 (0) | 2021.04.18 |
---|---|
Static Factory Method Pattern (0) | 2021.04.13 |
Singleton Pattern (0) | 2021.04.12 |
Promise.all 과 Promise.race (0) | 2021.04.11 |
Node TDD 라이브러리 Mocha (0) | 2021.03.28 |