@yossiz הנה זה לבינתיים.
https://github.com/MusiCode1/yemot-router/
הרעיון שזה (ניסה) לרשת את ראוטר של אקספרס.
זה יצא עקום מאוד...
אבל זה עובד.
אם תוכל להציץ, וגם לגלות לי איך אפשר לרשת את ראוטר בצורה נורמלית.
עריכה: אני יורש כמו שכתוב כאן.
הבעיה הייתה, שלא היה אפשר לרשת את ראוטר.
כי ברגע שהפעלת את פונקציית הבנאי ראוטר, היא דרסה את כל המתודות והמאפיינים שהיו לפניה.
עריכה 2: זה לא עוזר...
לא פתר את הבעיה.
עריכה 3:
הנה הפיתרון.
הבנתי שפונקציה בנאית בס"ה מחזירה את עצמה, ומכניסה את עצמה לאינטרפייס החדש.
ראיתי שבראוטר, הפונקציה לא מחזירה את עצמה, אלא משתנה שהיא בנתה לכבוד האינטרפייס החדש. אם כן, אפשר לחקות את הרעיון!
let myModule = function() {
const router = express.Router();
Object.setPrototypeOf(express.Router, myModule);
router.function = function(params) {
};
return router;
};
זאת הבנה גדולה מאוד:
פונקציה בנאית, מה שהיא תחזיר ייכנס לאינטרפייס החדש.
זה לא היה כתוב בשום ספר...
כך אני חושב יש הרבה יותר שליטה, מאשר לריב עם this
(ניסיתי לשכנע את this
להתאתחל עם הפונקציה אקספרס.ראוטר.
יואו! איך שהוא נפגע...).
קצת הגיגים:
אני מתחיל להבין, למה לJS יש כ"כ הרבה מעריצים.
אני מתלהב מאוד מהרעיון של א-סינכרוניות, שרק עכשיו למדתי להכיר.
קח פונקציה, תריץ אותה, קח עוד אחת, תריץ אותה ו-
תחרות: מי שמגיעה ראשונה - מנצחת!
לא עוד הסרבול שבלעשות פקודות בזו אחר זו.
בתחילה, חשבתי, "למה הם היו חייבים לעשות את זה אסינכרוני.
שהיו נותנים אפשרות בחירה, אם אנחנו רוצים סנכרוני, או אסנכרוני".
אבל עם התחביר של א-סינק, זה באמת כך.
אפשר בקלות להריץ קוד סינכרוני, ולמרות שהוא מבוצע בזה אחר זה, הוא לא תוקע את הלולאה הכללית.
(שזה רעיון בפני עצמו: בתחילה הציק לי הרעיון הזה.
במקום הרבה תהליכונים, תהליך אחד ארוך?
ומה אם בקשה אחת פתאום תתקע ותתארך? השרת יושבת!
אח"כ חשבתי, הרי בס"ה מעבד מבצע פקודה אחת בו-זמנית.
אז אין עניין ליצור הרבה תהליכונים. הרי בס"ה רק אחד מהם יבוצע ברגע נתון.
אז ניצור בתוך התוכנה מנגנון שמאפשר אין-ספור תהליכונים, וברגע שאחד מפנה את המעבד, הבא אחריו ייכנס לעיבוד.
אם לאחד הקליינטים ייקח הרבה זמן לקבל נתונים מהDB,
מייד JS יעבור לקליינט אחר שצריך עזרה.
לקח לי זמן לבלוע את הרעיון. אבל עכשיו אני לא מבין איך אפשר אחרת...
השאלה מה יקרה, אם פתאום אחד ידרוש עיבוד ארוך.
שם באמת השרת ייתקע...
לכן אולי קראתי, שJS לא מיועד לחישובים מסובכים).