אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » מדריכים » Node.js » מדריך Node.js: שימוש ב-require

מדריך Node.js: שימוש ב-require

רן בר-זיק אוקטובר 21, 2014 7:35 am אין תגובות

כך כוללים קבצי מודולים עם require ב-Node.js

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

אוהבים את מדריך Node.js? רוצים לדעת עוד?

ספר מקיף על Node.js, בעברית, שנכתב על ידי רן בר-זיק וכולל תרגילים רבים ומידע מקיף - גם על מודולים אסינכרוניים וגם על CLI וסטרימים ומידע רב יותר על Node.js ניתן להורדה ממש פה.
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

במאמר הקודם דיברנו על דרכים שונות לכתוב פונקציה אסינכרונית ב-node.js. על מנת להמחיש את העניין, השתמשתי במודול של Node.js שנקרא fs. מודולים הם בעצם ספריות קוד (לא שונות לצורך העניין מתוספים של jQuery) שאנו חייבים לקרוא להן אם אנו משתמשים בהן בקוד שלנו. יש ספריות שבאות עם Node.js באופן מובנה – כמו fs למשל, ויש כאלו שצריך להוריד ולהתקין.

על מנת שמודול יהיה זמין ונוכל להשתמש בו, אנו צריכים לכלול אותו ב-require. איך זה נראה? ראינו כבר קודם – בדיוק ככה:


var fs = require('fs');

מה בעצם קורה כשאנחנו עושים require? קובץ ה-JavaScript נקרא, מורץ וחוזר אלינו אובייקט שנקרא export. נמחיש את העניין אם נכתוב מודול משלנו. כאשר אנו כותבים מודול משלנו וקוראים לו, אנחנו חייבים לשים /. לפני השם שלו (אם הקריאה מתבצעת מאותה תיקיה) כיוון שאחרת ה-require חושב שמדובר במודול ליבה ואז הטעינה תכשל.

ניצור קובץ ששמו הוא testModule.js. יהיה בו את הקוד הבא:


console.log("evaluating testModule.js");

var invisible = function () {
    console.log("invisible");
}

exports.message = "hi";

exports.say = function () {
    console.log(message);
}

באותה תיקיה אני אצור קובץ test.js ואכניס לתוכו את הטקסט הזה:


var tm = require('./testModule.js');

אם אני אריץ את test.js (זוכרים איך? nodejs test.js). אני אקבל את הפלט הזה:


evaluating testModule.js

זה כי ה-require לוקח את הקוד ומריץ אותו, לפיכך שורת ה-console.log תפעל ברגע שאני עושה require.

אם אני אדפיס את משתנה ה-tm שמקבל את מה שה-require מחזיר, זה מה שאני אקבל:


{ message: 'hi', say: [Function] }

חשוב מאוד לשים לב שאם אני משתנה את אובייקט ה-export ואז (במקום אחר לצורך העניין) אני קורא שוב ל-require, אובייקט ה-export מה-require ה"חדש" יהיה אותו אחד מה-require ה"ישן". בנוסף, אין evaluation פעמיים מסובך? הכי פשוט עם דוגמה:


var tm = require('./testModule.js');

console.log(tm);

console.log(tm);

tm.message = "Ran the great!";

var tm2 = require('./testModule.js');

console.log(tm2);

מה לפי דעתכם הפלט יהיה? התשובה היא:


evaluating testModule.js
{ message: 'hi', say: [Function] }
{ message: 'hi', say: [Function] }
{ message: 'Ran the great!', say: [Function] }

זה פשוט בגלל ש-require עושה caching. בגלל זה, אגב, אפשר לעשות לפעמים טעינה מעגלית (a טוען את b שטוען את c שטוען את a).

אם אנו מספקים ל-require תיקיה ולא קובץ js, אז require יחפש את package.json כדי לטעון את הקבצים שמפורטים ב-json הזה או את index.js אם package.json לא נמצא.
אם אנו עושים require לקובץ json, אז נקבל חזרה את קובץ ה-json אחרי שנעשה לו פרסינג והוא אובייקט JS.

מידע נוסף על require אפשר למצוא בדוקומנטציה של Node.js. מי שקרא מדריכים קודמים שלי יודע שאני חסיד גדול של דוקומנטציות. בשעת כתיבת שורות אלו הדוקומנטציה של Node.js די על הפנים, אבל אפשר להפיק תועלת רבה מהקריאה בה – למרות שהרבה פעמים צריך לקרוא כמה פעמים כדי להבין מה רוצים ממך. ה-מקרה של require לא שונה לצערי, אבל עדיין כדאי לעיין ב-module in Node.js.

במאמר הבא אנו נדבר מעט על מודולי הליבה של Node.js – ואפילו נבנה, כמו כל המדריכים, שרת http משלנו!

⚠️ תזכורת – המדריכים האלו הם רק טעימה, בספר שלי "ללמוד Node.js בעברית" יש הסברים מלאים ומקיפים על השפה המיועדים ללימוד עצמי. עם תרגילים והסברים. הספר יצא לאור בשיתוף הקריה האקדמית אונו ובתמיכת החברות אלמנטור, ו-Iron source ונערך טכנית על ידי בנג'י גרינבאום (מפתח ליבה של Node.js), גיל פינק ומתכנתים מעולים נוספים. 

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

אוהבים את מדריך Node.js? רוצים לדעת עוד?

ספר מקיף על Node.js, בעברית, שנכתב על ידי רן בר-זיק וכולל תרגילים רבים ומידע מקיף - גם על מודולים אסינכרוניים וגם על CLI וסטרימים ומידע רב יותר על Node.js ניתן להורדה ממש פה.
למאמר הקודם בסדרת המדריכים על Node.jsמדריך Node.js: קוד אסינכרוני מותנה ומקבילי
למאמר הבא בסדרת המדריכים על Node.jsמדריך Node.js: שימוש במודולים בסיסיים
לכל המאמרים במדריך
node.js

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

    הפרויקטים שאני כותב ושוחררו לציבור ברישיון קוד פתוח נמצאים ברובם בגיטהאב.
חיפוש

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד