כתיבת קובץ
חלק מהיחידה יסודות Node.js במסלול ה-Node.js של Coddy. שיעור 14 מתוך 33.
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.js). העבודה הקודמת שלך נשארת בשיעור משלה. קרא את הקבצים שסופקו לפני עריכת store.js. העותק הזה מכיל את כלי הפתקים שקורא קבצים.
add עדיין שוכחת את הפתק כשהתוכנית מסתיימת. שנה אותה כך שתשמור כל פתק ב-notes.json, כדי ש-list תציג אותו בהרצה הבאה.
- ב-
store.js, אחרי ש-addמוסיפה את הפתק החדש למערך, כתוב את המערך כולו בחזרה ל-notes.jsonבפורמט JSON. כתוב כל פתק, לא רק את החדש: כתיבה לקובץ מחליפה את כל מה שהיה בו. הזח את ה-JSON בשני רווחים, כדי שיהיה קל לקרוא אותו ב-Files. - ב-
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.
נסה זאת: הקלד add Buy bread בתיבה שאחרי $ node notes.js והקש Enter. תראה Saved note 3.. הקלד list: Buy bread הוא עכשיו פתק מספר 3, אף שזו הרצה חדשה. פתח את notes.json ב-Files כדי לראות את המערך שנשמר. לאחר מכן הקלד 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
1הרצת JavaScript ב-Node
שלום, Nodeקריאת הפקודהארגומנטים של שורת הפקודהפקודותתרגלו בעצמכם: Express אונליין