قراءة ملف
جزء من قسم أساسيات Node.js في رحلة Node.js على Coddy. الدرس 12 من 33.
تبدأ كل مرة تشغيل بالملاحظات الثلاث نفسها، لأنها لا تُحفظ إلا في الذاكرة.
تقرأ readFileSync(path, 'utf8') من node:fs ملفًا على هيئة سلسلة نصية. يحتوي ملف الملاحظات على JSON، وهو تنسيق نصي للبيانات يُكتب مثل المصفوفات والكائنات في JavaScript، وتحول JSON.parse ذلك النص إلى مصفوفة. تؤدي قراءة ملف غير موجود إلى إطلاق خطأ ENOENT، لذا تحقّق أولًا باستخدام existsSync. يستخدم المثال condition ? a : b، ويعطي a عندما يكون الشرط صحيحًا وb عندما يكون خاطئًا.
import { existsSync, readFileSync } from 'node:fs';
const scores = existsSync('scores.json')
? JSON.parse(readFileSync('scores.json', 'utf8'))
: [];
console.log(scores.length);من دون 'utf8'، ستحصل على Buffer، أي البايتات الخام للملف، بدلًا من سلسلة نصية.
التحدي
سهلتفتح هذه الخطوة مشروع أداة سطر الأوامر للملاحظات المُعدّة للدورة، بدلًا من ملفات مشروعك من CommonJS Modules (بما فيها legacy/stats.cjs). يبقى عملك السابق في درسه الخاص. اقرأ الملفات المقدّمة قبل تعديل store.js. تحتوي هذه النسخة على كل الأوامر حتى الآن، بالإضافة إلى أمر جديد هو clear.
حاليًا، يبدأ كل تشغيل بالملاحظات الثلاث نفسها المكتوبة في store.js. ينبغي أن تأتي ملاحظاتك من ملف بدلًا من ذلك: notes.json، الذي يمكنك فتحه في «الملفات».
- في
store.js، استبدل قائمة الملاحظات الثلاث الثابتة. يجب أن تحتويnotesفي المخزن على المصفوفة المحفوظة فيnotes.json: اقرأ الملف كنص، ثم حوّل نص JSON إلى مصفوفة. - إذا لم يكن
notes.jsonموجودًا، يبدأ المخزن بمصفوفة فارغة بدلًا من التوقف بسبب خطأ. تحقّق من وجود الملف قبل قراءته.
يبدأ notes.json بملاحظتين، لذا يطبع node notes.js list ما يلي:
Notes for you
1. Buy milk
2. Call Adaعندما لا يكون notes.json موجودًا، يطبع ما يلي:
Notes for you
No notes yetلن تغيّر سوى store.js. يطبع notes.js بالفعل No notes yet عندما يكون المخزن فارغًا.
جرّب ذلك: اكتب list في المربع بعد $ node notes.js واضغط على Enter. سترى الملاحظتين من الملف. ثم اكتب clear. هذا الأمر موجود بالفعل في notes.js: فهو يحذف notes.json ويطبع Deleted notes.json. اكتب list مرة أخرى: سترى No notes yet. قبل أن تضغط على «تحقق»، اضغط على «إعادة ضبط الملفات» لإعادة notes.json، لأن عمليات التحقق تحتاج إليه.
جرّب بنفسك
// حمّل الملاحظات من notes.json بدلًا من هذه القائمة.
const store = {
notes: ['Buy milk', 'Call Ada', 'Water the plants'],
add(text) {
this.notes.push(text);
return this.notes.length;
},
};
export default store;
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات Node.js
1تشغيل JavaScript على Node
مرحبًا يا Nodeقراءة الأمروسائط سطر الأوامرالأوامرتدرّب بنفسك: Playground لـ Express