הארכיטקטורה החזקה של Node מונעת אירועים היא אחד היתרונות החזקים שלה.
טייק אווי מפתח
- תכנות מונע אירועים הוא בחירה טובה עבור אפליקציות אינטראקטיביות, במיוחד אפליקציות GUI, מכיוון שהיא מאפשרת לקוד להגיב לפעולות המשתמש בכל סדר.
- תכנות מונע אירועים משמש בדרך כלל ביישומי אינטרנט, שבהם מאזינים לאירועים מופעלים כאשר משתמשים מקיימים אינטראקציה עם ה-DOM.
- הטמעת תכנות מונחה אירועים ב-Node.js היא קלה עם מחלקת EventEmitter, המאפשרת לך ליצור אירועים מותאמים אישית ולצרף מאזינים לאירועים לטפל בהם.
בעת בניית כל יישום תוכנה, החלטה מכרעת אחת כרוכה בבחירת הפרדיגמה המתאימה לקוד שלך.
תכנות מונע אירועים הוא בחירה טובה עבור אפליקציות אינטראקטיביות המגיבות לפעולות המשתמש שעלולות להתרחש בכל סדר. זוהי פרדיגמה פופולרית יותר עם אפליקציות GUI מאשר עם תוכניות שורת פקודה או קוד מערכות משובצות.
מה הם אירועים?
אתה יכול לחשוב על אירוע כעל פעולה או התרחשות שהקוד שלך יכול לזהות ולהגיב אליו. המערכת או משתמש יכולים להפעיל אירוע והקוד שלך ירשום בדרך כלל פונקציה לטיפול בו.
דוגמה לאירוע בסיסי היא לחיצה על כפתור כדי לבצע פעולה מסוימת. פעולת הלחיצה על הכפתור מפעילה אירוע, והפונקציה שפועלת כאשר הלחיצה מתרחשת נקראת
מאזין אירועים (או מטפל).מהו תכנות מונחה אירועים?
תכנות מונחה אירועים הוא א פרדיגמת תכנות שבו זרימת הביצוע של יישום תלויה באירועים המתרחשים במקום להיות ברצף בהחלט.
פרדיגמה זו משמשת בעיקר בעת בניית ממשקי משתמש ואפליקציות בזמן אמת, כאשר אירוע כמו פעולת משתמש אמור להפעיל פעולה במערכת.
הפרדיגמה פופולרית מאוד בעת בניית אפליקציות אינטרנט, שבהן מאזינים לאירועים מופעלים כאשר משתמשים מקיימים איתם אינטראקציה מודל אובייקט המסמך (DOM).
התמונה הבאה מדמיינת כיצד פועלת הזרימה בתכנות מונעות אירועים. כאשר מתרחש אירוע, ערוץ האירוע מקבל אותו ומעביר אותו למאזין המתאים לטיפול:
תכנות מונחה אירועים ב-Node.js
ה לולאת אירוע JavaScript הוא אחד המושגים הבסיסיים מאחורי האופי האסינכרוני של זמן הריצה של Node.js. ארכיטקטורה מונעת אירועים משתמשת במובן שלה פולט אירועים מודול כדי להקל על זרימת ביצוע חלקה.
עם תכנות מונחה אירועים, Node.js מאפשר לך ליצור יישומים בצד השרת שיכולים להתמודד עם אינטראקציה של משתמשים, פעולות קלט/פלט ועיבוד נתונים בזמן אמת. זה מתרחש בצורה לא חוסמת, וכתוצאה מכך ביצועים משופרים וחוויה חלקה יותר עבור המשתמש.
יישום תכנות מונע אירועים ב-Node.js קל כאשר אתה מבין את היסודות של הגדרה, הפעלה וטיפול באירועים.
כיתת EventEmitter
עם ה פולט אירועים class ב-Node.js, אתה יכול ליצור אירועים מותאמים אישית ולצרף מאזינים לאירועים כדי לטפל בהם. כדי להשתמש בכיתה בקוד שלך, ייבא אותו מה- אירועים מודול כזה:
// CommonJS
const { EventEmitter } = require("events")
// ES6
import { EventEmitter } from"events"
לאחר מכן, המחלקה ופונקציות החברים בה זמינות עבורך לשימוש ביישום שלך. כדי להתחיל לפלוט ולטפל באירועים, אתחול מופע חדש של ה- פולט אירועים מעמד.
לדוגמה:
const FoodEvents = new EventEmitter()
זה יוצר אובייקט פולט חדש בשם FoodEvents שיכולים לפלוט אירועים ולרשום מאזינים. הכיתה EventEmmitter מספקת שלוש שיטות להאזנה לאירוע: עַל, addListener, ו פַּעַם.
ה עַל השיטה היא הפונקציה הבסיסית ביותר להוספת מאזינים לאירועים, ו addListener עובד בדיוק באותו אופן. שניהם מקבלים את שם האירוע ופונקציית התקשרות חוזרת כארגומנטים. ההתקשרות חזרה היא פונקציית המטפל בפועל. אתה יכול להשתמש עַל ו addListener לסירוגין.
הנה איך אתה מטפל באירוע באמצעות ה עַל שיטה:
FoodEvents.on("cookie_ready", (data) => {
console.log("Cookie ready for packaging, data received: ", data);
})
באמצעות addListener כחלופה ישירה ל עַל:
FoodEvents.addListener("cookie_ready", (data) => {
console.log(
"Cookie will now be packaged and sent out, data received: ",
data
);
})
שתי הדוגמאות הללו יוסיפו את ההתקשרות חזרה למערך מאזיני האירועים עבור cookie_ready מִקרֶה. אם תשתמש בשניהם, ההתקשרות לאחור שלהם תפעל לפי הסדר.
ה פַּעַם השיטה רושמת מאזין אירועים חד פעמי שפועל בפעם הבאה שהאירוע מופעל. לאחר מכן, המערכת תסיר אותו ממערך המאזינים.
הנה איך להשתמש פַּעַם כדי לטפל באירוע חד פעמי:
FoodEvents.once("cookie_sent", (data) => {
console.log("Cookie is sent out, data received: ", data);
})
במקרה זה, הפולט יקשיב רק ל- cookie_נשלח אירוע פעם אחת והסר את המטפל לאחר הפעלתו.
כל שלוש השיטות מחזירות את הפולט, כך שתוכל לשרשר שיחות לכל אחת מהן.
אל תשכח שכדי שמאזין יטפל באירוע, האפליקציה חייבת לפלוט את האירוע הזה בשלב מסוים. הנה כמה קוד לדוגמה כדי לפלוט את cookie_ready אירוע באמצעות לִפְלוֹט שיטה:
functionbakeCookie() {
console.log("Cookie is baking, almost ready...")setTimeout(() => {
FoodEvents.emit("cookie_ready", { flavor: "vanilla cookie" })
}, 3000)
}
bakeCookie()
כאשר אתה מפעיל את הקוד הזה שמדפיס הודעה בקונסולה שהעוגייה אופה, ממתין 3 שניות ופולט את cookie_ready אירוע, תקבל פלט כמו התמונה למטה:
זה מדגים כיצד מאזיני האירועים פועלים לפי הסדר שאתה רושם אותם.
ה פולט אירועים המחלקה מספקת שיטות נוספות, כולל:
- removeListener: מסיר מופע של מאזין ממערך מאזיני האירועים. ה כבוי השיטה זמינה גם למטרה זו.
- prependListener: שיטה זו רושמת גם מאזין אך במקום להוסיף אותו לסוף מערך המאזינים, היא מוסיפה אותו להתחלה. לאחר מכן הוא יפעל לפני כל מאזינים אחרים שאולי כבר רשמתם.
- prependOnceListener: זה עובד בדיוק כמו prependListener, אבל המאזין פועל רק פעם אחת, כמו במקרה של פַּעַם.
- RemoveAllListeners: פונקציה זו מסירה את כל המאזינים הרשומים לאירוע בעל שם ספציפי, או את כל המאזינים אם לא מעבירים אליו שום ארגומנט.
- מאזינים: מחזירה מערך מאזינים של שם האירוע שאתה מעביר אליו כארגומנט.
- שמות אירועים: אתה יכול להשתמש בפונקציה זו כדי לקבל את כל שמות האירועים שעבורם כבר רשמת מאזין.
- setMaxListeners: Node.js זורק אזהרה כברירת מחדל כאשר אתה רושם יותר מ-10 מאזינים לאירוע, כדי למנוע דליפות זיכרון. אתה יכול להתאים את ערך ברירת המחדל הזה באמצעות setMaxListeners. אתה יכול גם לבדוק ערך זה באמצעות getMaxListeners.
ה אירועים החבילה מספקת פונקציונליות מקיפה עבור תכנות מונחה אירועים ב-Node.js.
מהן כמה שיטות מומלצות לתכנות מונעות אירועים?
לכל גישת תכנות יש פשרות, והתעלמות מהשיטות המומלצות עלולה להשפיע לרעה על היישום שלך. להלן מספר שיטות עבודה מומלצות שכדאי לקחת בחשבון בעת בניית יישומים מונעי אירועים:
- השתמש בשמות תמציתיים ותיאוריים לאירועים כדי לאפשר בסיס קוד נקי וניתן לתחזוקה.
- אמצו שיטות טיפול טובות בשגיאות ורישום רישום, כדי לאפשר איתור באגים קל של שגיאות.
- הימנע מגיהינום של התקשרות חוזרת (קינון התקשרויות מרובות) בעת כתיבת מאזינים לאירועים. השתמש בהבטחות JavaScript במקום זאת.
- אל תיצור יותר מדי מאזינים לאירוע אחד. שקול לפצל את האירועים ולשרשר אותם במקום זאת.
בנה אפליקציות עם הארכיטקטורה הנכונה
כלל כללי החל על בניית תוכנה הוא קבלת החלטות ארכיטקטורה ועיצוב מתאימות. כאשר אתה נוקט בגישה השגויה לבניית אפליקציה, אתה תתמודד עם ההשלכות בסופו של דבר.
תכנות מונחה אירועים היא פרדיגמה שיכולה להיות בעלת השפעה משמעותית על הארכיטקטורה והביצועים של האפליקציה. בכל פעם שהאפליקציה שלך, או חלק ממנה, תלויה באירועים כדי לתפקד, עליך לשקול תכנות מונחה אירועים.