המעלות והחסרונות של single-page application
-
@דוד ל.ט.
השאלה מלאה באי הבנות.
SPA: זה צורת התנהגות מסויימת של יישום אינטרנט.
MVC: זה פרדיגמת תכנות שנוגעת לקלט פלט לאינטראקצייה עם משתמש, אין שום קשר לשאלה, וכוונת השואל מן הסתם היא לממשק דפדפן קלאסי מהסוג של ריענון מלא, לאפוקי SPA.
אנגולר: היא פרימוורק JS מבוסס MVC. היא לא נועדה לSPA, אלא נועדה לתת מענה מושלם מקצה לקצה ליישום אינטרנט, וSPA אכן נמצא במקום של כבוד בתוך רשימת היכולות והתמיכה המובנית. ואגב השם הזה מטעה, הייתי מציע במקום לומר SPA לומר "יישום".
חווייית משתמש: מושג שכולל את כל מה שקשור לייעול התקשורת של המשתמש עם מערכת, ובכל טכנלוגיה אתה מתאמץ עבור זה המון, באנגולר אתה מתאמץ פחות. כאיש WPF, הייתי אומר לך לזכור שWPF לא עושה מאומה מעבר לחויית משתמש, מאומה. אנגולר דוקא עושה דברים מעבר כי היא סט כלים לכל מה שיישום צריך. הייתי גם מקרב לך מושג מוכר: ItemTemplate. יש באנגולר מושג מקביל. כ"כ פשוט וגם כ"כ חוסך.לפי ההסבר שלך אז השאלה היא מה עדיף MVC עם אנגולר או MVC עם ASP.NET, נכון? מה שברור שאם כל הנידון היה רק SPA לא היה שווה להתאמץ בשביל זה ללמוד את אנגולר 3 חודשים או יותר, כי גם יישום מרובה עמודים יכול להשתמש ב Ajax בהרבה מקומות, ולתת חויית משתמש לא רעה בכלל.
לגבי WPF, יש המון חוויית משתמש בוודאי, אבל יש גם הפרדה בין הממשק לנתונים, סידור הפקדים עם שפת XAML הרבה יותר נוחה, בניית פקדים מותאמים אישית הרבה יותר רחבה ונוחה. אם מישהו יפתח אשכול עם שאלה מה עדיף WPF או WINFORMS אשמח להגיש לו את הנתונים הנ"ל עם דוגמאות קונקרטיות על מגש של כסף ואשכנע אותו גם לפתוח את הפה ואאכיל אותו בכפית של זהב...
פורסם במקור בפורום CODE613 ב19/09/2016 23:31 (+03:00)
-
לפי ההסבר שלך אז השאלה היא מה עדיף MVC עם אנגולר או MVC עם ASP.NET, נכון? מה שברור שאם כל הנידון היה רק SPA לא היה שווה להתאמץ בשביל זה ללמוד את אנגולר 3 חודשים או יותר, כי גם יישום מרובה עמודים יכול להשתמש ב Ajax בהרבה מקומות, ולתת חויית משתמש לא רעה בכלל.
לפי ההסבר שלי היית צריך להפסיק להשתמש במינוח MVC. אגב אנגולר נחשבת לMVC.
ואחרי שאני מתאפק ועובר על מידותיי ומנסה לקרוא את שאלתך (אחרי החלפת המילה MVC במילים "ממשק אינטרנטי ישן" = אין לוגיקה משמעותית בצד הלקוח, ודאי שלא רמה ששמה יישום. המינוח יישם מרובה עמודים הוא נכון אבל מחמיץ מאוד את הנקודה), אז התשובה היא כזו: ללמוד אנגולר לוקח שלוש חודשים, אך לבנות אתר "לא רע" כפי שציינת יכול לקחת פי עשרה זמן מאשר באנגולר (לי אישית זה קרה).
בסה"כ מה שעליך להבין זה מה הצורך בצד לקוח חכם. ואכן אין הכרח רק שזה מקיל מאוד, מפריד, מיעל ביצועי רשת, לצד הלקוח כלומר לתצוגה.לגבי WPF, יש המון חוויית משתמש בוודאי, אבל יש גם הפרדה בין הממשק לנתונים, סידור הפקדים עם שפת XAML הרבה יותר נוחה, בניית פקדים מותאמים אישית הרבה יותר רחבה ונוחה. אם מישהו יפתח אשכול עם שאלה מה עדיף WPF או WINFORMS אשמח להגיש לו את הנתונים הנ"ל עם דוגמאות קונקרטיות על מגש של כסף ואשכנע אותו גם לפתוח את הפה ואאכיל אותו בכפית של זהב...
יפה יפה. רק להיסטורייה גם עם WPF היה לך טענת "למה": http://code.613m.org/viewtopic.php?f=1&t=22&p=118#p118. וזה דוגמה מייצגת.
WPF גדול מWinForms פחות ממה שאנגולר גדולה מיישום אינטרנט צד שרת נטו, וזה מבחינת כל הדברים שציינת: הפרדה, קריאות, שימוש חוזר ועוד, רק שפה לא מדובר על הרנדור לפיקסלים כבWPF אלא השלב הלוגי.
הצורך בWPF איננו לחוויית משתשמש. הוא לחווית מתכנת, שבונה ממשק משתמש. אותו הדבר אנגולר.
@רחמיםואשכנע אותו גם לפתוח את הפה ואאכיל אותו בכפית של זהב...
כעת אתה מוכן להאכיל (ואני בספק, מאוד קשה להסביר גם דברים שברורים כשמש למישהו שלא נחשף כלל לפתרון ואף לא לגמרי לבעיה), אבל אם מישהו היה תוקף אותך בשלב שהתחלת ללמוד WPF, גם אחרי שהבנת לגמרי שהיא תעזור לך המון, היית ממש כועס על שאלה קנטרנית מסוג "אם אתה לא עונה - ומלמד אותי חצי מתורת התכנות + WPF על רגל אחת שהרי אחרת זה לא נוח/זה לאט/מה הרעיון - אז סימן שאתה רץ אחרי האופנה ללא מחשבה".
פורסם במקור בפורום CODE613 ב20/09/2016 01:01 (+03:00)
-
@דוד ל.ט.
יפה יפה. רק להיסטורייה גם עם WPF היה לך טענת "למה": viewtopic.php?f=1&t=22&p=118#p118. וזה דוגמה מייצגת.
שאפו!!! לא זכרתי בכלל את הפוסט הזה, עכשיו שעברתי עליו אני רואה שם קטע שגם ממצה וגם הצחיק אותי בחלקו עד מאוד
צא וחשוב כמה תיחכום הכניסו בתיכנות ה UI באותו רגע, שהחליטו שערכי פקדים לא יהיו עוד מוחלטים כי אם יחסיים או קשורים למאפיינים אחרים. אין לך כל מאפיין ומאפיין שאי אתה יכול לרדות בו כדגת הים, ואין לך דבר, חכם יותר, מאשר עולם שבו היחסות שולטת בכל, הדברים הולכים ומתקרבים יותר ויותר לצורה של האקולוגיה, שבה ערכים מושפעים ללא הרף מערכים אחרים הנמצאים בתנועה מתמדת........
אז לעניין מ"ש שם "אין לך כל מאפיין ומאפיין שאי אתה יכול לרדות בו כדגת הים" באנגולר (ולמען האמת גם בריאקט) זה מתקיים באופן מוחלט ב DOM מלבד שאר יתרונות הארכיטקטורה שלא ניכנס אליהם כרגע.
פורסם במקור בפורום CODE613 ב20/09/2016 05:48 (+03:00)
-
@דוד ל.ט.
אז התשובה היא כזו: ללמוד אנגולר לוקח שלוש חודשים, אך לבנות אתר "לא רע" כפי שציינת יכול לקחת פי עשרה זמן מאשר באנגולר (לי אישית זה קרה).
את זה בדיוק אני מחפש, דוגמא לאתר שנבנה ב ASP.NET MVC ולקח פי 10 זמן מאשר אותו אתר עם אנגולר.
במה מדובר? תוכל לפרט, זו בדיוק הנקודה אני רוצה לראות איך האנגלר חוסך לי יותר מ ASP.NET MVC.@דוד ל.ט.
כעת אתה מוכן להאכיל (ואני בספק, מאוד קשה להסביר גם דברים שברורים כשמש למישהו שלא נחשף כלל לפתרון ואף לא לגמרי לבעיה), אבל אם מישהו היה תוקף אותך בשלב שהתחלת ללמוד WPF, גם אחרי שהבנת לגמרי שהיא תעזור לך המון, היית ממש כועס על שאלה קנטרנית מסוג "אם אתה לא עונה - ומלמד אותי חצי מתורת התכנות + WPF על רגל אחת שהרי אחרת זה לא נוח/זה לאט/מה הרעיון - אז סימן שאתה רץ אחרי האופנה ללא מחשבה".
זו לא בעיה להראות את המעלות של WPF, הייתי מבקש מהשואל לכתוב פרוייקט קטן ב WINFORMS אשר מציג את הקבצים והתיקיות שיש לו במחשב בצורת עץ, ובלחיצה על כל ענף בעץ מוצגים הפרטים של הקובץ או התוכן של התיקיה, ואז אני הייתי מעלה אותו דבר ב WPF ומראה בברור כמה הוא היה צריך להתקשקש עם העץ כדי להכניס לו את הנתונים, והממשק והנתונים הופכים לדייסה אחת גדולה וארוכה, [והכל עוד יותר מסתבך כאשר צריך גם להציג את פרטי התיקיות והקבצים בלחיצה על ענף בעץ], וכמה שהעץ הזה נראה כל כך ישן בלי אפשרות להתאים אותו אישית, וכו'. וזה בפרוייקט קטנצ'יק כזה, וק"ו בפרוייקט אמיתי וגדול.
וזה גם מה שביקשתי לעיל ממך להציג לי פרוייקט מול פרוייקט. אתה רוצה שאני אכתוב אתר קטן ב ASP.NET MVS 4.5 ואעלה לכאן, ואתה תעשה אותו דבר עם אנגולר ותסביר את המעלות שחור על גבי לבן?פורסם במקור בפורום CODE613 ב20/09/2016 07:29 (+03:00)
-
רחמים, אני לא מבין כ"כ באנגולר (רק התחלתי ללמוד אותו לפני כחצי שנה ומאז לא התעסקתי בו), אבל אני חושב שיש כמה מעלות:
א. טמפלייט. אתה משתמש בתבניות ולא צריך לחזור על אותו קוד כמה וכמה פעמים רק בשביל שיהיה לך פקד יפה שאתה רוצה וכדו'. אז נכון שיש גם ספריות טמפלייט שמתפקדות עצמאית ללא אנגולר. אבל זה אחד היתרונות הגדולים שלו.
ב. בינדינג בין הHTML לקוד הJS. דבר שחוסך לך הרבה הרבה קוד JS מיותר.
ושוב, כמו שאמרו אין קשר בין אנגולר לSPA אם כי הוא באנגולר הרבה יותר קל לעשות זאת.
כמו כן, באנגולר כל הלוגיקה של הUI כתובה בצד הלקוח, דבר שמשפר את הביצועים באופן משמעותי (כיון שלא כל שינוי קטן בדף דורש לרפרש את כל הדף, ולחכות לתעבורת הרשת, אלא הכל מאד מקומי.) שוב, גם את זה אפשר לעשות לבד, אבל אנגולר הוא פריימוורק שכולל את כל הדברים הללו ומקל על מפתח צד לקוח את החיים.
אנגולר כולל אפשרות של QA לצד לקוח.
משפר את קריאות הקוד וממילא את התחזוקה שלו.הערה לסיום: אני חושב שיש הרבה דברים בחיים שאנו מבינים את הצורך בהם רק אחרי שהתקשקשנו הרבה עם הדברים הישנים יותר. אותו דבר אנגולר, תפתח יישום AJAX מורכב עם הרבה עמודים וכו', ואז תבין לבד מדוע יש צורך אמיתי באנגולר.
פורסם במקור בפורום CODE613 ב20/09/2016 09:35 (+03:00)
-
א. זה יש גם ב ASP.NET MVC ונקרא partial view
ב. אני מנסה לחשוב על מצב קלאסי מתי זה שימושי, יש לך דוגמא?הערה לסיום: אני חושב שיש הרבה דברים בחיים שאנו מבינים את הצורך בהם רק אחרי שהתקשקשנו הרבה עם הדברים הישנים יותר. אותו דבר אנגולר, תפתח יישום AJAX מורכב עם הרבה עמודים וכו', ואז תבין לבד מדוע יש צורך אמיתי באנגולר.
חכם לומד מנסיונם של אחרים.
פורסם במקור בפורום CODE613 ב20/09/2016 14:03 (+03:00)
-
לדעתי. בלי לחקור הרבה.
תלך על אנגולר. לדעתי זה יהיה הימור שווה.
ואני בטוח שאחרי שתלמד אותו תחזור לכאן עם הסברים למה זה יותר טוב.
בדיוק כמו ההבדל בין WPF ל WinFroms
ואם אתה בכל זאת רוצה דוגמה אז זה ממש כמו ההבדל בין WPF ל WinFroms.פורסם במקור בפורום CODE613 ב20/09/2016 14:36 (+03:00)
-
אנגולר 1.x ואנגולר 2.x זה שני דברים שונים לגמרי. הדבר היחיד שדומה זה השם שלהם.
אני מכיר רק את 1. והוא הכי פופלרי בתחומו. אבל אומרים שאנגולר 2 הוא הרבה יותר טוב ויש בו הרבה הפקות לקחים.
אבל לא יודע מה לומר.
פורסם במקור בפורום CODE613 ב20/09/2016 16:45 (+03:00)
-
אני מקפיץ. כי אני באמצע לכתוב אתר קטנטן לעבודה אצלנו. בלי אנגולר (צד השרת הוא MVC5 מה שנורא לא קשור לעניין)
שום UI שום כלום. רק כמה ajax שמעדכנים בצד לקוח, וידוא כפול בלקוח ובשרת ועוד כמה שטויות.
ואני עם דמעות צחוק ובכי מעורבים על השאלה מה הצורך באנגולר (ליתר הדיוק לפרימוורקים צד לקוח). אין שום אספקט כמעט שלא ישתפר משמעותית אם הייתי כותב באנגולר (חלב שנשפך לעת עתה. יש לציין שאני כותב מעט מאוד לווב, JS ובפרט באנגולר).
זה גם פשוט לא ייאמן כמה מתכני ווב עובדים קשה ובמיוחד לפני כמה שנים. כל נושא הכי קטן זה שאלת מליון דולר איך לעשות.פורסם במקור בפורום CODE613 ב16/12/2016 11:20 (+02:00)
-
דוד, לכבודך אני מעלה כאן פוסט דומה תראה את זה ברוח טובה.
נהייתי לאחרונה שר בטחון, עשו לי סיור והראו לי טנק מרכבה עם השידרוגים האחרונים, ואת מטוס ה F35. חזרתי למשרד והייתי צריך לשלוח פתק לפקיד שישב חדר ליד, השתמשתי בטכניקה המוכרת מבית הספר "מטוס מנייר" וראה זה פלא, השגתי את המטרה בלי עשרים שנות פיתוח, בלי מיליארדי דולר ובלי צוותות ענק של בדיקות על גבי בדיקות.
בשביל מה הצבא צריך כאלו מטוסים??? אכן תלוי מה המטרות שלך.
פורסם במקור בפורום CODE613 ב17/12/2016 19:43 (+02:00)