파일 쓰기
Coddy Node.js 여정의 Node.js 기초 섹션에 포함된 레슨. 33개 중 14번째.
프로그램이 끝나면 add는 메모를 잊어버립니다.
writeFileSync(path, text)는 파일을 쓰며, 파일에 있던 내용을 모두 바꿉니다. JSON.stringify는 배열을 JSON 텍스트로 바꾸고, null, 2는 두 칸 들여써서 Files에서 보기 좋게 만듭니다.
import { writeFileSync } from 'node:fs';
const scores = [12, 40];
scores.push(31);
writeFileSync('scores.json', JSON.stringify(scores, null, 2));파일에는 항상 배열 전체가 저장됩니다. 메모를 불러오고, 하나를 추가한 다음, 전부 다시 씁니다. store.js에서 add는 store 객체의 메서드입니다. 메서드 안에서 this는 객체 자체이므로 this.notes는 store의 배열입니다. 배열 자체를 전달하면 오류가 발생합니다. 파일에는 텍스트가 저장되기 때문입니다.
챌린지
쉬움이 단계에서는 파일 읽기에서 사용한 프로젝트 파일( store.js 포함)이 아니라, 과정에서 미리 준비한 노트 명령줄 도구 프로젝트를 엽니다. 이전 작업은 이전 수업에 그대로 남아 있습니다. store.js를 수정하기 전에 제공된 파일을 읽어 보세요. 이 사본에는 파일을 읽는 노트 도구가 들어 있습니다.
add는 프로그램이 종료되면 여전히 노트를 잊어버립니다. 모든 노트를 notes.json에 저장하여 다음 실행 때 list에서 볼 수 있도록 만드세요.
store.js에서add가 새 노트를 배열에 넣은 다음, 배열 전체를 JSON으로notes.json에 기록하세요. 새 노트만이 아니라 모든 노트를 기록해야 합니다. 파일을 쓰면 파일에 있던 내용이 전부 바뀝니다. Files에서 읽기 쉽도록 JSON의 들여쓰기를 두 칸으로 하세요.notes.js의add분기에서Adding: ...를 출력하는 줄을 바꾸세요. 이제Saved note, 새 노트의 번호, 마침표만 출력합니다.notes.json이 다음 두 노트로 시작할 때,node notes.js add Buy bread는 다음을 출력합니다:그리고Saved note 3.notes.json에는 다음 내용이 들어 있습니다:[ "Buy milk", "Call Ada", "Buy bread" ]notes.json이 없으면add가 파일을 만듭니다.clear를 실행한 뒤node notes.js add Call Ada는Saved note 1.을 출력하고, 이어서list를 실행하면1. Call Ada가 표시됩니다.
직접 해 보기: $ node notes.js 뒤의 입력란에 add Buy bread를 입력하고 Enter를 누르세요. Saved note 3.이 표시됩니다. list를 입력하세요. 이번 실행이 새로 시작되었는데도 Buy bread가 이제 3번 노트입니다. Files에서 notes.json을 열어 저장된 배열을 확인하세요. 그런 다음 파일을 삭제하는 clear를 입력하고 add Call Ada를 입력하세요. Saved note 1.이 표시됩니다.
직접 해보기
import { existsSync, readFileSync } from 'node:fs';
const file = 'notes.json';
const store = {
notes: existsSync(file) ? JSON.parse(readFileSync(file, 'utf8')) : [],
add(text) {
this.notes.push(text);
return this.notes.length;
},
};
export default store;
Node.js 기초의 모든 레슨
직접 연습해 보세요: Express 플레이그라운드