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

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

רן בר-זיק נובמבר 11, 2014 7:58 am 3 תגובות

במאמר הזה אנו מדברים על פונקציות שימושיות ב-Node.js utils ובמיוחד על מתודה שמאפשרת לנו לעשות ירושה בקלות.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-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 ואז אמרתי שאפשר לבצע ירושה באופן פשוט וקל עם utlities. זה גם מה שנלמד היום – איך משתמשים ב-utilities שזה עוד מודול ליבה של Node.js. רשימת כל מודולי הליבה, אגב, נמצאת באתר של Node.js.

באופן עקרוני, מודול Utilities הוא לא מודול "אמיתי" אלא אוסף של כלים שימושיים במיוחד. חלק מהכלים מסייעים לנו להפוך את הקוד ליותר נקי, חלק מהכלים עושים פעולות משמעותיות במיוחד. כל המתודות נמצאות בדוקומנטציה של Node.js Utilities ומומלץ להסתכל עליה.

המתודה הראשונה שאנו רואים היא מתודה שמאוד דומה ל-sprintf, אם אתם מכירים – שזו דרך מאוד שימושית ליצור מחרוזת טקסט עם משתנים. הנה דוגמה:


util = require("util"); //The require

someVar = 'This is my var!'

var result = util.format('This is some test string with variable example: %s', someVar);

console.log(result);
//prints: This is some test string with variable example: This is my var!

אם נמשיך ונסתכל במתודות שיש בדוקומנטציה, אנו נראה שיש שם כמה מתודות שפשוט מדפיסות לקונסולה, למשל:


require('util').debug('message on stderr');

או אפילו עם time stamp!


require('util').log('Timestamped message.');

אחת מהמתודות שם שימושית כיוון שהיא מדפיסה את כל האובייקט באופן נוח מאוד לקריאה מהקונסולה:


var util = require('util');
var http = require('http');

console.log(util.inspect(http, { showHidden: false, depth: null, colors: true }));

את הדוגמה הזו ואחרות הבאתי כמובן מהדוקומנטציה של util, לא המצאתי פה משהו חדש. כך למשל בדוקומנטציה של מתודת inspect יש הסבר מפורט על כל הגדרה שאפשרת לשנות (מה זה colors או depth למשל). אין טעם לעבור כמו תוכי במדריך הזה על מנת להסביר את מה שהוסבר היטב בדוקומנטציה, אבל כן שווה להתעכב על אחת המתודות החשובות שיש ב-util – מתודה שמאפשרת לנו לבצע ירושה מאובייקט לאובייקט – ממש כמו בכל שפה נורמלית.

ב-JavaScript, כל דבר, למעט מערך, נחשב כאובייקט. בין אם מדובר בפונקציה, מחרוזת טקסט או מספר. כל דבר הוא אובייקט. למרות זאת, אין דרך נורמלית לבצע ירושה. למה אנחנו צריכים לבצע ירושה? קחו למשל את מודול events שעליו דיברנו במאמר הקודם – על מנת שהמודול שאני כותב יוכל לירות אירועים, יהיה לי הרבה יותר קל לרשת ממודול אירועים מאשר להתחיל לעשות require ל-events, להחזיר את זה לאובייקט וממנו לקרוא ל-emit. הרבה יותר קל לעשות משהו כזה:


myModule.prototype.saveTheObject = function (obj) {
    //doing something that related to saving
    this.emit("saved-myModule", obj);
};

כלומר שמתודת ה-emit, או מתודת ה-on שמאזינה לאירועים (אם המודול שלי קשור למודולים אחרים שמשחררים אירועים) תהיה חלק מה-class שלי. איך אני בעצם גורם ל-myModule class לרשת מ-event? כאן נכנסת לפעולה מתודת inherits שמקבלת שני ארגומנטים – את האובייקט שיורש ואת האובייקט שיורשים ממנו. ככה זה נראה בעולם האמיתי:


var util = require("util");
var events = require("events");

function myModule() { //first we create the module object

}

util.inherits(myModule, events.EventEmitter); //The inheritance

myModule.prototype.saveTheObject = function (obj) { //some method that emitting event
    //doing something that related to saving
    this.emit("saved-myModule", obj);
};


/** module ends here **/


var myModule = new myModule(); //creating the instance

myModule.on("saved-myModule", function(data) {
    console.log('Received data: "' + data + '"');
})

myModule.saveTheObject("It works!"); // Received data: "It works!"

את הדוגמה שלעיל ביססתי על הדוגמה שמופיעה בדוקומנטציה, אז שווה להסתכל גם שם.

חשוב לציין שיש לא מעטים שחושבים שירושה ב-JavaScript היא לא נכונה ויעדיפו לעשות instance לאובייקטים ולהשתמש במתודות שלהם באופן ישיר. אבל טוב לדעת שזה אפשרי.

במאמר הבא אנו נדבר על streams ב-Node.js

⚠️ תזכורת – המדריכים האלו הם רק טעימה, בספר שלי "ללמוד 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: שימוש ב-Streams
לכל המאמרים במדריך
node.js

3 תגובות

  1. Yaniv הגב נובמבר 20, 2016 בשעה 4:58 pm

    (node) util.debug is deprecated. Use console.error instead.

  2. אבי הגב אוקטובר 2, 2019 בשעה 6:02 pm

    ב ES6, לירושה יש תחביר סטנדרטי.
    צריך לעדכן בגוף המדריך.
    תודה.

  3. ניר הגב פברואר 24, 2020 בשעה 9:50 am

    ב-JavaScript, כל דבר, למעט מערך, נחשב כאובייקט.
    זה לא נכון, גם מערכים הם אובייקטים.

השארת תגובה

ביטול

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

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-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 | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

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