תבניות של API
-
@dovid אמר בתבניות של API:
@davidnead אני אולי נשמע חוזר על עצמי, אבל השאלות שלך לא הכי מתאימים לnodejs.
nodejs לא מתאימה לאנשים שמאמינים בדברים מוכנים וממוסדים.
היא מתאימה לכאלה שאוהבים גמישות ושקיפות מקסימליים.
אני מציע לך לבדוק את asp net core (שפת c#), שמה הברירת מחדל היא המון ספריות ענק שעושים המון המון עבודה. זה כמובן לא נוגע כלל לקליינט סייד.
אני אישית אגב לא מפתח בזה (אני די עובד בפרוייקטים קיימים, גם nodejs וגם asp net 5 שזה די ישן וגם קצת קצת וורדפרס המתועבת), כך שהרשמים שלי הם התרשמות מרוחקת או עדויות של קולגות.זה בסדר, גם אני חוזר על עצמי.
לגופו של ענין, בשביל זה תיקנתי את השאלה בהודעה האחרונה שלי. עזוב, אני לא מחפש מיסוד ולא כלום, אני אוהב את הדרך שעבדתי עד עכשיו.
אני נתקלתי בבעיה, והתחלתי לנחש מה הפתרון. במקום זה אני משנה כעת כיוון ורוצה לשומע איך אחרים מתמודדים עם הבעיה הזו.
אני רוצה לשמוע מאנשים (רצוי עצמאים) שכן מפתחים בnodejs פרוייקטים חדשים מידי פעם, מה תכל'ס הם עושים. לא רעיונות, אלא מה הם עושים בפרוייקטים שלהם? הם בונים הכל מאפס? הם נעזרים במרכיבים שהם בנו עם הזמן? טמפלייטים? פתרונות אחרים?
במידה והם כן בונים הכל מאפס, האם זה גורם להם לומר על חלק מהפרוייקטים: "לקוח יקר, אני לא מתאים לך", או לחילופין לוותר על nodejs ללכת על טכנולוגיה אחרת באותם פרוייקטים?אני הראשון בארץ שפוגש את הבעיה?
נ.ב. לגבי הקטעי קוד וכו שאתה צובר לך עם הזמן, זה נכון חלקית, ומכסה רק חלק מהבעיה. אוכל להדגים אם צריך.
-
@dovid אמר בתבניות של API:
@davidnead
nodejs לא מתאימה לאנשים שמאמינים בדברים מוכנים וממוסדים.אגב, זה נשמע פנטסטי (מישהו הפנה פה באחד הפוסטים):
לפי מה שהוא מתאר כל כך יפה, זה כביכול מיועד בדיוק למה שביקשתי, לאנשים שרוצים גמישות ושקיפות מקסימליים אבל כן רוצים קיצורי דרך ולרקוד על 2 החתונות. בפועל, אני עדיין בודק את המערכת הזו, אבל על פניו נראה שזה שוב לא הכתובת. מממוסד מידי מחד, ולא תועלתי מידי מאידך. -
@davidnead לפני שאתה רץ לספריות פנטסטיות, תבין שבפרוייקט חדש בasp יש לך שלד ניכר מאוד של מערכת, שזה כולל המון המון דברים שבnodejs צריך להתקין ולהגדיר עבורם המון המון.
הספריה prisma היא אכן דעתנית מאוד. אבל אל תרוץ לספריות, קודם תראה שאתה מצליח להיות מפתח עם שמחת חיים בסביבה הזאת, אחרת זו לא אופציה. ושים לב, asp בשונה מnodejs היא יחסית מאוד ממוסדת, ומאוד מחייבת להבין "מה הם התכוונו" ו"איך אני אמור לעשות" שאלות שאין בכלל בnodejs.
עדיף כנראה שלא נדון פה על asp כי זה חורג מהנושא, אם תרצה פתח נושא חדש לדיון על כך באופן ייעודי.החמצתי את ההודעה הקודמת שלך. אני מאוד מבין שאתה בוחר להמשיך עם nodejs ואתה רק שואל איך מתמודדים מפתחי nodejs עם כל פרוייקט חדש.
התשובה שלי היא שאין משתמשי nodejs שפותחים פרוייקטים חדשים לעיתים קרובות בכלל. בדיוק מהסיבה שזה nodejs. אני די קרוב לודאי שאין מפתחי Nodejs שמבצעים ישירות עבודות עבור לקוחות פרטיים (לאפוקי חברות תוכנה). אתה מבין טוב שאתה מאוד מאוד לבד. -
@dovid אמר בתבניות של API:
קודם תראה שאתה מצליח להיות מפתח עם שמחת חיים בסביבה הזאת
לא הבנתי אותך. איזו סביבה? NODE? אני חי שם בכיף הרבה זמן. ממש לא רץ לספריות. צריך להבין שזה מנוגד לאופי שלי, מבחינתי הייתי בונה הכל מאפס. בעבר בניתי פרוייקט ענק (בשני המובנים סרוור+קליינט) שאת כל הקליינט שלו בניתי מאפס בלי פריימוורק, וגם בסרוור בניתי כמעט פרייוורק משלי.
זה היה טוב בשביל להבין איך עובדים פרייוורקים ולמה צריך אותם, אבל לא בשביל לחזור על זה. החיים מלמדים אותו שצריך לדעת גם לא להמציא את הגלגל, ובטח כאשר יש לך מחויבות לכסף של הלקוחות. -
@dovid אמר בתבניות של API:
התשובה שלי היא שאין משתמשי nodejs שפותחים פרוייקטים חדשים לעיתים קרובות בכלל. בדיוק מהסיבה שזה nodejs. אני די קרוב לודאי שאין מפתחי Nodejs שמבצעים ישירות עבודות עבור לקוחות פרטיים (לאפוקי חברות תוכנה). אתה מבין טוב שאתה מאוד מאוד לבד
אז מה שאתה אומר לי שזה בעצם נכון שnodejs מתאים רק לפרוייקטים גדולים (כאלו שהקמת הפרוייקט זה החלק המאוד זניח), ועצמאי שעובד עם לקוחות קטנים - עליו לבחור בטכנולוגיה שונה (איזו, זו שאלה נפרדת).
ובקיצור - שאני אוהב את הדבר הלא-נכון או שעלי לחזור להיות שכיר בחברה גדולה. -
@davidnead אמר בתבניות של API:
אז מה שאתה אומר לי שזה בעצם נכון שnodejs מתאים רק לפרוייקטים גדולים (כאלו שהקמת הפרוייקט זה החלק המאוד זניח)
או לפרוייקטים ארוכי טווח, למשל מפתחים שבונים עבור עצמם, שיש להם את כל הזמן שבעולם ולא כל יום הם פותחים בפרוייקט רב שנתי כזה.
-
@dovid אמר בתבניות של API:
@davidnead אמר בתבניות של API:
אז מה שאתה אומר לי שזה בעצם נכון שnodejs מתאים רק לפרוייקטים גדולים (כאלו שהקמת הפרוייקט זה החלק המאוד זניח)
או לפרוייקטים ארוכי טווח, למשל מפתחים שבונים עבור עצמם, שיש להם את כל הזמן שבעולם ולא כל יום הם פותחים בפרוייקט רב שנתי כזה.
כלומר אותו רעיון. פרנסה לא תוציא מזה...
-
@dovid אמר בתבניות של API:
@davidnead תביא לי את הpackage.json של הפרוייקט האחרון שלך.
למשל?
תביא את הpackage.json של הפרוייקט האחרון שלך, רצוי פרוייקט גדול עם אלמנטים רבים של אפליקציה וובית קלאסי.
אוקי, זה נכון, אך דברים כאלו פחות מטרידים אותי. כי כמו שאתה אומר בעצמך אפשר למצוא להם מענה יפה בNPM.
מי שחי במייקרוסופט באמת חי בגן עדן מבחינות מסוימות, אך הוא גם נעול בגן עדן הזה כמו כלוב זהב ולא יכול לצאת ממנו. אך כמו שאמרת זה כבר דיון נפרד. -
-
-
-
אין לי המון המון נסיון, אבל ממה שיש לי (שברובו בזכות מישהו אחר שאני רוכב בעיקר על הנסיון שלו)
@davidnead אמר בתבניות של API:
הם בונים הכל מאפס? הם נעזרים במרכיבים שהם בנו עם הזמן?
כן וכן
@davidnead אמר בתבניות של API:
במידה והם כן בונים הכל מאפס, האם זה גורם להם לומר על חלק מהפרוייקטים: "לקוח יקר, אני לא מתאים לך"
(רק לענ"ד) התשובה אמורה להיות כן...
יש לי חבר שטוען לי כל הזמן ש-strapie היא התשובה לכל הבעיות של מפתחי נוד. עוד לא הספקתי לבדוק אותו לעומק. אבל ממה שהבנתי ממנו, זה אמור לתת הרבה יותר מסתם ממשק גרפי לבניית מודלים.
-
@yossiz אמר בתבניות של API:
יש לי חבר שטוען לי כל הזמן ש-strapie היא התשובה לכל הבעיות של מפתחי נוד.
מזל שבסוף הואלת לכתוב על זה!
נראה מדהים וגם נראה שיעזור בהחלט ל@davidnead
לטובת המחפשים:
https://strapi.io/
https://github.com/strapi/strapi -
@dovid
אני אמנם נדנדתי פה הרבה בשבועיים האחרונים, אבל במקביל גם עבדתי קשה ועשיתי המון שיעורי בית. חרשתי הרבה דברים כולל את הסטראפי הזה. לאף אחד לא התחברתי.
הסטראפי הזה אמור להיות מקבילה של וורדפרס רק בnode, וממילא הוא אמנם לא PHP אבל יש לו את החסרונות של מערכת ניהול תוכן. (לא רוצה למען השם לייצר את הDB שלי ע"י קוביות ושדות של UI). ויחד אם זה אין לו את עיקרה היתרון של וורדפרס - השפע של התוספים שמאפשרים לך באמת לתת מענה לכל הצרכים.
אתה מקבל CMS מינימלי שבקושי יש לו תבניות ותוספים, אבל גם קשה מאוד לפתח בתוכו ולהשתלב איתו מבחינת סרוור סייד.אולי לא חפרתי מספיק, אבל זה היה הרושם שלי. שזה סוג של קירח מכאן ומכאן.
היום מצאתי את מה שהיה נראה לי הכי קרוב: keystonejs
היה נשמע בוידיאו שהוא מתאר את הבעיה שלי מצוין ובא לתת עליה מענה. תכל'ס הורדתי למחשב ושיחקתי עם זה ולא באמת הבנתי מה אני מרוויח מזה. -
@davidnead
האם אתה צריך אתרים מעוצבים ולכל לקוח אתר חדש נפרד לגמרי למטרות שלו? או שיש לך נישה מסויימת שמאחדת את האופי של הלקוחות שלך?
אני למשל נמצא בנישה שאני מפתח מערכות טלפוניות, אבל לכל לקוח יש לי ממשק נפרד לפי הצרכים שלו, טבלאות שונות, פעולות שונות, API שונה והתממשקות לשירותים חיצוניים שונים, וכמו"כ ההתממשקות עצמה מול המערכת הטלפונית (באמצעות API של ימות המשיח).
לפני כמה שנים חיפשתי פרימוורק שאוכל לבנות עליו ממשק טוב ומצאתי את YII2 זה בנוי בPHP, ובשונה מוורדפס שניתן לבנות איתו אתר שלם ללא לגעת בקוד, ב YII אתה חייב לגעת בקוד, זה מיועד רק למתכנתים, אבל עושה להם את החיים קלים יותר, יש בו CRUD מצויין, יש גנרטור שניתן ליצור לכל טבלה בד"ב את הקבצים הנדרשים, ולאחר יצירת המודל וכו' אתה יכול לשנות וכתוב מה שבא לך ולהשתמש במחלקות ופונקציות העזר שהפרימוורק מביא.
בניתי עם זה הרבה ממשקים ומאות טבלאות, ולכל לקוח יש גישה רק לטבלאות שלו, ולכל לקוח אני שם פונקציות והתממשקות לשירותים שונים לפי צרכיו.
אציין שאני כבר כמה שנים עובד עם זה, והתחלה הכרתי את היכולות הבסיסיות ביותר שלו, ועם הזמן למדתי אותו יותר ויותר לעומק, הוספתי לזה כל מיני פונקציות ושינויים בקבצי הליבה בעצמם, שידרגתי את הגנרטור, הוספתי אפשרות של ייבוא מאקסל שלא הייתה קיימת במקור, ועוד.
אני לא מכיר את Laravel אבל אני מאמין שזה משהו בסגנון.
אך במשך הזמן יצא לי פה ושם שהייתי צריך כל מיני אפשרויות בצד קליינט (ב YII מוטמע כבר bootstrap ו jquery) ונמשכתי לעבור לאפליקציות SPA מבודד צד לקוח וצד שרת.
עד שהגעתי לפרוייקט אחד מורכב מאוד שהייתי צריך הרבה השקעה בצד לקוח ולכן הלכתי על vue, הלכתי על תבנית בתשלום שקניתי כאן ובהשקעה של זמן מה הצלחתי ב"ה להקים ממשק בסיסי ואני מתקדם איתו ומעשיר את הידע בVUE.
כשהתחלתי לפתח את הממשק בVUE תיכננתי לעשות תבניות מסויימות ולהעשיר את ארגז הכלים שלי שאוכל להתחיל להקים את כל שאר המערכות שלי והממשקים שלי עם VUE בצד לקוח ו nodejs צד שרת.
אבל למעשה אני רואה שכשמגיע לקוח ומבקש לי שהוא צריך מערכת רישום מסויים שהוא נותן לי טבלת אברכים ושגר להם הודעה והם יבחרו האם להרשם וכדומה, הכי קל לי לעשות זאת עם הכלים הישנים, אני יוצר טבלה חדשה בד"ב, באמצעות הגרנרטור אני יוצר את קבצי ה PHP, מייבא את הטבלה, יוצר משתמש חדש, מוסיף לו הרשאת גישה לטבלה, מוסיף לו לחצן של קישור לטבלה, ושולח לו פרטי גישה וסיימתי. הלקוח מקבל לינק, נכנס עם פרטי הגישה, יש לו כפתור "רישום ל...", הוא נכנס, יש לו טבלה עם אפשרות צפייה ועריכה ומחיקת והוספת שורה, סינון ומיון, יבוא וייצוא לאקסל. ואם הוא צריך לחצן לשליחת המידע לשרת חיצוני או כל תוספת אחרת אני פותח את קובץ הקונטרלר שנוצר ע"י הגנרטור, מוסיף פונקציה, ובמידת הצורך מוסיף view לזה וכו'.
אני מרגיש שזה הכי הוגן ללקוח, שמבחינתו אין לו הרבה נפק"מ האם הייתי בונה בPHP או בnodejs כאשר מה שדרוש לו הוא סה"כ שיגור הודעה טלפונית עם ממשק צפייה בתוצאות.
אולי אם יהיה לי יותר זמן אוכל לכתוב פוסט אחר נפרד על הרשמים שלי מPHP מול nodejs שאם שניהם אני עובד כל הזמן.
מה באתי לומר כאן?
הייתי בטוח שאחרי שאהיה בקי בטכנולוגיה החדשה אתחיל לפתח הכל שם, באה המציאות והוכיחה לי בפנים שזה לא בדיוק, אלא תמיד אצטרך לחשוב מה טוב וכדאי להשקיע ללקוח הנוכחי.
ייתכן שזה באמת מהלך טוב להכיר 2 טכנולוגיות חלוקות ולהתרגל להשתמש בכל אחת לצרכים שהיא מתאימה. -
@חוקר אמר בתבניות של API:
@davidnead
האם אתה צריך אתרים מעוצבים ולכל לקוח אתר חדש נפרד לגמרי למטרות שלו? או שיש לך נישה מסויימת שמאחדת את האופי של הלקוחות שלך?
אני למשל נמצא בנישה שאני מפתח מערכות טלפוניות, אבל לכל לקוח יש לי ממשק נפרד לפי הצרכים שלו, טבלאות שונות, פעולות שונות, API שונה והתממשקות לשירותים חיצוניים שונים, וכמו"כ ההתממשקות עצמה מול המערכת הטלפונית (באמצעות API של ימות המשיח).
לפני כמה שנים חיפשתי פרימוורק שאוכל לבנות עליו ממשק טוב ומצאתי את YII2 זה בנוי בPHP, ובשונה מוורדפס שניתן לבנות איתו אתר שלם ללא לגעת בקוד, ב YII אתה חייב לגעת בקוד, זה מיועד רק למתכנתים, אבל עושה להם את החיים קלים יותר, יש בו CRUD מצויין, יש גנרטור שניתן ליצור לכל טבלה בד"ב את הקבצים הנדרשים, ולאחר יצירת המודל וכו' אתה יכול לשנות וכתוב מה שבא לך ולהשתמש במחלקות ופונקציות העזר שהפרימוורק מביא.
בניתי עם זה הרבה ממשקים ומאות טבלאות, ולכל לקוח יש גישה רק לטבלאות שלו, ולכל לקוח אני שם פונקציות והתממשקות לשירותים שונים לפי צרכיו.
אציין שאני כבר כמה שנים עובד עם זה, והתחלה הכרתי את היכולות הבסיסיות ביותר שלו, ועם הזמן למדתי אותו יותר ויותר לעומק, הוספתי לזה כל מיני פונקציות ושינויים בקבצי הליבה בעצמם, שידרגתי את הגנרטור, הוספתי אפשרות של ייבוא מאקסל שלא הייתה קיימת במקור, ועוד.
אני לא מכיר את Laravel אבל אני מאמין שזה משהו בסגנון.
אך במשך הזמן יצא לי פה ושם שהייתי צריך כל מיני אפשרויות בצד קליינט (ב YII מוטמע כבר bootstrap ו jquery) ונמשכתי לעבור לאפליקציות SPA מבודד צד לקוח וצד שרת.
עד שהגעתי לפרוייקט אחד מורכב מאוד שהייתי צריך הרבה השקעה בצד לקוח ולכן הלכתי על vue, הלכתי על תבנית בתשלום שקניתי כאן ובהשקעה של זמן מה הצלחתי ב"ה להקים ממשק בסיסי ואני מתקדם איתו ומעשיר את הידע בVUE.
כשהתחלתי לפתח את הממשק בVUE תיכננתי לעשות תבניות מסויימות ולהעשיר את ארגז הכלים שלי שאוכל להתחיל להקים את כל שאר המערכות שלי והממשקים שלי עם VUE בצד לקוח ו nodejs צד שרת.
אבל למעשה אני רואה שכשמגיע לקוח ומבקש לי שהוא צריך מערכת רישום מסויים שהוא נותן לי טבלת אברכים ושגר להם הודעה והם יבחרו האם להרשם וכדומה, הכי קל לי לעשות זאת עם הכלים הישנים, אני יוצר טבלה חדשה בד"ב, באמצעות הגרנרטור אני יוצר את קבצי ה PHP, מייבא את הטבלה, יוצר משתמש חדש, מוסיף לו הרשאת גישה לטבלה, מוסיף לו לחצן של קישור לטבלה, ושולח לו פרטי גישה וסיימתי. הלקוח מקבל לינק, נכנס עם פרטי הגישה, יש לו כפתור "רישום ל...", הוא נכנס, יש לו טבלה עם אפשרות צפייה ועריכה ומחיקת והוספת שורה, סינון ומיון, יבוא וייצוא לאקסל. ואם הוא צריך לחצן לשליחת המידע לשרת חיצוני או כל תוספת אחרת אני פותח את קובץ הקונטרלר שנוצר ע"י הגנרטור, מוסיף פונקציה, ובמידת הצורך מוסיף view לזה וכו'.
אני מרגיש שזה הכי הוגן ללקוח, שמבחינתו אין לו הרבה נפק"מ האם הייתי בונה בPHP או בnodejs כאשר מה שדרוש לו הוא סה"כ שיגור הודעה טלפונית עם ממשק צפייה בתוצאות.
אולי אם יהיה לי יותר זמן אוכל לכתוב פוסט אחר נפרד על הרשמים שלי מPHP מול nodejs שאם שניהם אני עובד כל הזמן.
מה באתי לומר כאן?
הייתי בטוח שאחרי שאהיה בקי בטכנולוגיה החדשה אתחיל לפתח הכל שם, באה המציאות והוכיחה לי בפנים שזה לא בדיוק, אלא תמיד אצטרך לחשוב מה טוב וכדאי להשקיע ללקוח הנוכחי.
ייתכן שזה באמת מהלך טוב להכיר 2 טכנולוגיות חלוקות ולהתרגל להשתמש בכל אחת לצרכים שהיא מתאימה.ראשית - לא. אין שום מכנה משותף ללקוחות שלי.
לשאר הודעת - התחברתי אליה מאוד. אני חושב שהיא מאוד דומה לחוויה שלי. אלא שאתה הגעת מהמקום של המערכות הישנות ואתה חוזר אליהם בשעת הצורך, ואני יותר בבעיה כי אני לא רוצה להתחיל איתם.
לגבי התבנית שהבאת - עברתי גם על תבניות VUE וזו אכן נראת מצוינת. מה זה laravel המדובר שם?
-
@davidnead אמר בתבניות של API:
מה זה laravel המדובר שם
האמת לא התעמקתי
מלמעלה נראה שיש שם מספר גרסאות לאותה תבנית, אלא התאמה למספר טכנולוגיות והבוחר יבחר אם איזה שפה הכי נוח לו לעבוד
דהיינו התוצאה הסופית היא אותה תצוגה רק ששפת הפיתוח שונה
למשל ב laravel הממשק מבוסס גם צד שרת לכתחילה