קריאת קבצים ע"י שרת Node
אחד השימושים הנפוצים ביותר של שרת ה Node.JS הוא שרת קבצים . המהירות והנוחות בה הוא מתמודד עם קבצים בפורמטים שונים מהווים שיקול משמעותי בבחירתו לצורך זה . ה npm , כ אקו-סיסטם משלים, מספק לנו כמובן מספר מודולים בדיוק לצרכים אלו . במדריך זה נסקור כמה מהאפשרויות שיש לנו לקריאת קבצים .
המודול הבסיסי ביותר (והמובנה) הוא מודול ‘fs’ . נדגים קריאת קובץ ע"י השימוש בו.
הסבר :
בשורה הראשונה אנו מצהירים על השימוש במודול ‘fs’
בשורה הבאה אנו קוראים את הקובץ ע"י הפונקציה readFile . חשוב לזכור שהפונקציה היא אסינכרונית !!
למעשה, כברירת מחדל, כל הפונקציות של המודולים השונים הן אסינכרוניות וזאת על מנת לנצל היטב המאפיין הכי בולט בצורת העבודה של שרת node , ה non-blocking IO (נושא סופר חשוב זה הינו רלוונטי לדיון אחר) . היות וצורת העבודה היא אסינכרונית, ולא ניתן להשתמש ב try-catch כמו בקוד סינכרוני, אנחנו עושים שימוש ב callback function המופעלת ברגע שפעולת קריאת הקובץ מסתיימת !!
הפונקציה מקבלת 2 פרמטרים : את השגיאה (אם היתה כזו במהלך קריאת הקובץ) ואת תוכן הקובץ אותו קראנו כמובן .
אדגים כעת שימוש במודול אחר, "עשיר" קצת יותר בשם ‘fs-extra’ . המודול הזה אינו מובנה ויש להורידו מה npm . בקוד המצורף ישנן 2 הדגמות להעתקת קובץ : בצורה אסינכרונית (ברירית המחדל) ובצורה סינכרונית.
ניתן לשים לב כיצד בצורה הסינכרונית אנחנו עושים שימוש ב try-catch , שכן אנו יכולים לקבל את השגיאה אם קרתה הזמן אמת, בעוד שבצורה האסינכרונית, נקבל את השגיאה "בדיעבד" כפרמטר ל callback function שתופעל לאחר שהפעולה הסתיימה .
בהדגמה האחרונה, נראה כיצד לקרוא תוכן של קובץ json . גם כאן, נעשה שימוש במודול חיצוני מאוד פופולרי בשם jsonfile .
גם כאן, קריאת הקובץ נעשית בצורה אסינכרונית. למודול ישנה גם הפונקציה המקבילה, readFileSync המאפשרת לקרוא את תוכן הקובץ בצורה סינכרונית.
לסיכום, ראינו מספר אפשרויות במספר מודולים לעבודה עם קובץ ע"י שרת ה Node.JS. לכל מודול היכולות ולפעמים ה"הרחבות" שלו. המשותף לכולם הוא כמובן צורת העבודה המומלצת והאסינכרונית, וזאת עקב אופן פעולת ה Processing Model שכל כך מאפיין שרת זה .
רוצה להיות כוכב על ב Node ?