הדפדפן ככלי אולטמטיבי לפיתוח GUI
-
יש פריימוורקים ייעודיים לתוכנה מבוססת HTML CSS JS חוצת פלטפורמות
הותיק והכבד - אלקטרון, כולל בתוכו כרומיום שלם,
או קלים יותר מבוססי WebView כמו Tauri (חסרון מסוים שאם אתה צריך לממש יכולות נייטיב שלא זמינות בAPI של טאורי אתה צריך לכתוב את זה בRust) או Neutralinojs -
@pcinfogmach כתב בהדפדפן ככלי אולטמטיבי לפיתוח GUI:
אני משתמש באופציה זו הרבה - מה שמעניין לי שאתה מגדיר אותה כאופציה נהדרת בזמן שאצלי זה רק מקל עלי בגלל סיבה אחת שאני מתעסק עם מסמכים על בסיס טקסט (כלומר מאגרים תורניים).
אתה משתמש בפקד.
אני מתכוון למשהו אחר לגמרי, פיתוח לWEB נפרד בפני עצמו, כשהאפליקציה היא רק ה"צד האחורי". זה בעצם ללמוד פיתוח לWEB רק עבור הממשק משתמש, ואז לשלב את C# בשביל כל הפעילות האמיתית של האפליקציה (שלעיתים ממש קטנה).לולא זה אני מרגיש שאני מפסיד מדאי הרבה כשאני עובר לדפדפן - אני מפסיד את הקלות של ה-debugging, את ה-intellisense העוצמתי של C#, את ההתמשקות העוצמתית של C# עם WPF.
כיום חוויית הדיבאג של תכנות לדפדפן לעיתים עולה על של C#. גם ההשלמה אוטומטית וההבנה של IDE מעולה אם משתמשים בTypeScript (שזה הנורמה היום בכל הפרימוורקים המובילים).
הקושי שהתכוונתי זה עצם הפיצול. אתה כאילו מפתח שני כלים: צד אחורי וצד קדמי נפרדים שמתקשרים ביניהם כאילו הם שני תוכנות.בכל אופן עדיין נותרו לי כמה שאלות ברמה כללית:
א. האם זה לא מאט את זמן הטעינה - לעבוד ככה?
ב. האם יש לי את הגמישות של ה-layout שאני מכיר ב-wpf?
ג. באיזה IDE אוכל להשתמש כדי לייצר אפליקציות בזרימה שאני מכיר מ-C#.אם אתה רוצה לשלב ממשק WEB אתה לא יכול לעשות את זה בלי ללמוד פיתוח לWEB, זה לא יום אחד וזה השקעה, זה עולם שונה מאוד, אבל לדעתי זה משתלם ואף חובה לכל מתכנת בסופו של דבר.
א. תיאורטית אולי, מעשית בכלל לא.
ב. יותר...
ג. VSCODE, לתיקיה נפרדת לגמרי שאחראית על צד הממשק. -
עוד שאלה בנושא הנ"ל:
מה קורה אם אני מפתח תוכנה שאני לא רוצה שהקוד יהיה זמין וקריא ככה בקלות? אם הכל זה קבצי JS ו-html? -
@pcinfogmach אתה יכול להוסיף בבילד שלב ערפול עם https://github.com/javascript-obfuscator/javascript-obfuscator
ישפיע במידה מסוימת על הביצועים, תלוי ברמת הערפול שתבחר -
@dovid כתב בהדפדפן ככלי אולטמטיבי לפיתוח GUI:
אם אתה רוצה לשלב ממשק WEB אתה לא יכול לעשות את זה בלי ללמוד פיתוח לWEB
מה בעצם אני צריך ללמוד כדי ללמוד פיתוח WEB
-
@צדיק-תמים קלוד הצליח לשחזר עבורי קוד מעורפל, אחרי מהפכת ה AI הערפול כבר לא מה שהיה
-
@יוסף-בן-שמעון תלוי ברמת הערפול
-
@pcinfogmach ערפול? זה רק הממשק הגרפי, זה בכל מקרה לא קריא בקלות בכלל (בכל הפרימוורקים המובילים שיש אריזה), וגם C# לא ממש מעורפל...
איך לומדים פיתוח WEB? מה היה קורה לו היית שואל אותי את זה על C# וWPF, או שהיית יודע יותר טוב או שלא היית יודע כלום...
במקרה שלך לא צריך את כל הסטאק, אפשר ממש רק צד לקוח: צריך בעיקרון ללמוד HTML+JS בסיסי, ובבסיסי הזה כדאי להבין טוב מה קורה שמה. כמו כן בJS להבין קצת אסינכרוניות: קלאבק, פרומייס וasync\await, ואז להתחיל ללמוד פרימוורק שאתה בוחר וזהו.
אם אתה רוצה ללמוד טיפה על הרעיון של שרת/לקוח (שאתה תממש אותו בדרך שונה בwebview2 עם post message) אז תוכל להפיק תועלת מהמדריך שלי פה בפורום על פיתוח full stack שנותן קצת רקע לעניין. לצערי חסר שמה כמה יסודות, אבל זה לא נוגע בכלל לענייננו. -
@dovid כתב בהדפדפן ככלי אולטמטיבי לפיתוח GUI:
כיום נהייתה אפשרות חדשה, להשתמש בפקד WebView2 המטורף של מייקרוסופט. זה בעצם edge (שזה כרום) עם המון מאפיינים אירועים ופונקציות לשליטה מוחלטת עליו. אפשר להגיש שפקד תיקיית HTML סטטית, ולתקשר דרך הJS עם התוכנה המארחת שיכולה להיות WPF עם C#, אני עשיתי את זה וזה ממש עובד נהדר.
אשמח מאוד אם תוכל לשתף דוגמה קצרה (אם זה לא טרחה גדולה).
מה שמאתגר אותי במיוחד זה החיבור בין המשתנים בקוד C# לבין הסקריפט ב-JS — למשל: איך לקשר ערך bool ל־checkbox בדף?
איך ניתן לטעון מראש משתנים רבים מתוך אובייקט data ב־C# אל תוך הדף, ואחר כך — איך אפשר לעדכן את ה־data הזה מתוך הדף עצמו?חשוב לי לעשות זאת בקוד קצר ונקי ככל האפשר, בלי מגילות אינסופיות.
-
@pcinfogmach אתה לא בכיוון, לא הבנת את הקונספט.
להראות זה טרחה לא קטנה, זה שני אפליקציות.
תנסה לבקש מבינה מלאכותית כל שהיא שתסביר לך איך לעשות לפי המתכונת הזו:
א. אפליקציית WEB עם TS, בעזרת vite או פרימוורק שלם כמו אנגולר/ריאקט/ויו
ב. תוכנה בC# עם מיפוי תיקיה לדומיין מקומי וניווט אליו, כשהתיקיה היא הפלט של א.
ג. תקשורת בין השניים על ידי JSON, עם PostMessage בצד לקוח ואירוע קבלה בצד שרת.כמובן שתמיד אתה יכול לפנות אלי להדרכה פרטית
-
@קומפיונט ככה עשיתי פעם, כיום חושב כמה שיותר להעדיף שרת לקוח, מנסה לבטא למה:
א. אתה מתנהג כמו כולם, כל מפתח ווב מכיר את העבודה ככה בלבד.
ב. אתה משתמש בפריימוורקים מקובלים בדרך הרגילה (אפשר אפילו להמיר את כל קריאות האינטרנט לPostMessage או כתלות במשתנה סביבה וכדומה עם כמה שורות קוד בודדות במקום מרוכז אחד, וככה לעשות בסיס קוד אחד לתצורות שונות, או להעביר בקלות כשעוברים לווב.
ג. מנסיון בעולם הווב, הארכיטקטורה של שרת לקוח מביאה להפרדה מבורכת (אתה בטח מכיר מהרבה תצורות של תצוגות את עקרונות ההפרדה, שלא יהיה תקשורת דו כיוונית חסרת סדר. זה קצת דומה).
ד. לא זוכר כעת מה עוד...