המעלות והחסרונות של single-page application
-
איך משקללים פה את כל המעלות והחסרונות
אתה מוזמן לבנות לעצמך עץ החלטה, זה המון חומר המון המון המון, ולא בטוח בכלל שתצליח לכסות הכל. אלא מה? כשאני מסתכל על משהו, אני לא מנסה לעשות שיקלול של פרטים ופרטי פרטים, מסתכלים על הגישה באופן כללי, על הרוח, על הדרך, הפרדיגמה, נותנים לה לשרות כמה חודשים (!!!) במוח, ואז מקבלים החלטה.
הערת אגב, עם הגישה הזאת שאתה מנסה לנצל ניסיון של אחרים באופן כמעט מוחלט, בלי שיש לך עקרונות משלך, לא תצליח לעולם לקבל החלטות, הרוח תיקח אותך כל שנה לכיוון אחר. ומה תעשה אם מחר ימציאו פיצ'ר שבדיוק מכסה משהו שרק בגללו עברת לגלקסיה אחרת?
אולי פעם אחת תכתוב מהם העקרונות הברורים והמטרות שלך, ואז תוכל לשאול מאנשים מנוסים איזו דרך היא הטובה ביותר להגיע למטרות הללו. בינתיים זה נראה שאתה שואל "מה הכי טוב" בלי לפרט, אז אם עוד לא למדת, כדאי שתלמד אין הכי טוב. יש אולי הכי גרוע (אולי!) אבל הכי טוב אין וגם לא יהיה. תמיד תצטרך לקבוע עקרונות משלך, ולהחליט.ואגב אפרופו עקרונות, יש משפט מחץ של גראוצ'ו מרקס: אלה העקרונות שלי, ואם הם לא מוצאים חן בעיניך, ובכן, יש לי אחרים להציע.
פורסם במקור בפורום CODE613 ב19/09/2016 21:14 (+03:00)
-
לגבי עקרונות, אז בתיכנות העקרון הוא כמובן בראש ובראשונה סדר ובהירות
ב. הפרדה בין שכבות שונות כמו נתונים תצוגה ומה שבינהם
ג. חויית משתמש
ד. קריאות של הקוד
ה. מניעת שגיאות שזה אומר שתהיה השלמה אוטומטית כמה שיותר, וכן טיפוסיות חזקה
ו. כלי ניפוי שגיאותאלו העקרונות, אני חושב שכולם יודעים אותם ואף אחד לא חולק עליהם, אולי יהיו חילוקי דעות בסדר העדיפיות שלהם אבל לא יותר מזה.
אבל אני שואל שאלה פשוטה, וכי בשביל חויית משתמש יותר טובה כדאי ללמוד את אנגולר ולעבוד איתו כל כך קשה? זה כל השאלה.
פורסם במקור בפורום CODE613 ב19/09/2016 21:43 (+03:00)
-
לגבי עקרונות, אז בתיכנות העקרון הוא כמובן בראש ובראשונה סדר ובהירות
ב. הפרדה בין שכבות שונות כמו נתונים תצוגה ומה שבינהם
ג. חויית משתמש
ד. קריאות של הקוד
ה. מניעת שגיאות שזה אומר שתהיה השלמה אוטומטית כמה שיותר, וכן טיפוסיות חזקה
ו. כלי ניפוי שגיאותאלו העקרונות, אני חושב שכולם יודעים אותם ואף אחד לא חולק עליהם, אולי יהיו חילוקי דעות בסדר העדיפיות שלהם אבל לא יותר מזה.
אני יכול לענות לך שכל אלו מתקיימים פי שלוש מאות מיליארד באנגולר 2 יותר טוב מאחרים (ואתה מניח כאן מראש שאין מה להתקדם בנושא, כלומר ההנחה שלך כפי שנראה להלן, שכל הנושא של אנגולר זה חוויית משתמש), אבל מתוך ניסיון עם פוסטים קודמים זה לא יעזור כלום. אתה תדרוש הוכחות, ותתחיל להיכנס לפרטים, ופרטי פרטים, תדרוש חקירה צולבת מול עשרים פריימוורקים אחרים. אין לי כוח לזה, אז התשובה שלי היא שאתה יכול בהחלט לתכנת ב MVC, זה מעולה!
@רחמיםאבל אני שואל שאלה פשוטה, וכי בשביל חויית משתמש יותר טובה כדאי ללמוד את אנגולר ולעבוד איתו כל כך קשה? זה כל השאלה.
אתה החלטת שזה רק נושא של חווית משתמש, מנין לך זאת??? זה בדיוק מה שמתיש אותי בכל הדיונים הללו שאתה משתתף בהם, זה כבר אומר שלא עשית אפילו מחקר ראשוני על הפריימוורק הזה. פשוט קראת כנראה באיזה בלוג זבל שכתב ש SPA זה "רק" עניין של חוויית משתמש, צישטלת את זה לאנגולר, ומכאן אתה עוד דורש ממני להאמין לשטות הזאת. שוב אותה שיטה, אתה לא רק רוצה שיגישו לך על מגש של כסף את הכל, אלא גם יאכילו אותך עם כפית וישכנעו אותך לפתוח את הפה. שכח מזה.
פורסם במקור בפורום CODE613 ב19/09/2016 22:49 (+03:00)
-
-
אני יכול לענות לך שכל אלו מתקיימים פי שלוש מאות מיליארד באנגולר 2 יותר טוב מאחרים
נראה לי שקצת הגזמת עם המספרים... ובכל אופן הרי האנגולר הוא רק בצד לקוח ולא בצד שרת אז מה הרווח הגדול פה בכלל בסופו של דבר את צד שרת אתה צריך לסדר עם ASP.NET MVC אז תלך איתו עד הסוף.
שוב אותה שיטה, אתה לא רק רוצה שיגישו לך על מגש של כסף את הכל, אלא גם יאכילו אותך עם כפית וישכנעו אותך לפתוח את הפה. שכח מזה.
לא היה ולא נברא, סתם דמוגוגיה. אם זה מה שאתה מרגיש אני מאוד מצטער. תן לאחרים לענות.
פורסם במקור בפורום CODE613 ב19/09/2016 23:13 (+03:00)
-
השאלה מלאה באי הבנות.
SPA: זה צורת התנהגות מסויימת של יישום אינטרנט.
MVC: זה פרדיגמת תכנות שנוגעת לקלט פלט לאינטראקצייה עם משתמש, אין שום קשר לשאלה, וכוונת השואל מן הסתם היא לממשק דפדפן קלאסי מהסוג של ריענון מלא, לאפוקי SPA.
אנגולר: היא פרימוורק JS מבוסס MVC. היא לא נועדה לSPA, אלא נועדה לתת מענה מושלם מקצה לקצה ליישום אינטרנט, וSPA אכן נמצא במקום של כבוד בתוך רשימת היכולות והתמיכה המובנית. ואגב השם הזה מטעה, הייתי מציע במקום לומר SPA לומר "יישום".
חווייית משתמש: מושג שכולל את כל מה שקשור לייעול התקשורת של המשתמש עם מערכת, ובכל טכנלוגיה אתה מתאמץ עבור זה המון, באנגולר אתה מתאמץ פחות. כאיש WPF, הייתי אומר לך לזכור שWPF לא עושה מאומה מעבר לחויית משתמש, מאומה. אנגולר דוקא עושה דברים מעבר כי היא סט כלים לכל מה שיישום צריך. הייתי גם מקרב לך מושג מוכר: ItemTemplate. יש באנגולר מושג מקביל. כ"כ פשוט וגם כ"כ חוסך.פורסם במקור בפורום CODE613 ב19/09/2016 23:14 (+03:00)
-
@דוד ל.ט.
השאלה מלאה באי הבנות.
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)