LinkedIn
WhatsApp
X
Telegram

StoryBook

Storybook היא בעצם ספריית UI שניתן להשתמש בה לתיעוד הקומפוננטות שלנו. המטרה היא ליצור סביבה מבודדת שבה ניתן לראות את כל הקומפוננטות שלנו ולשחק איתם החל מהעברת props שונים, שינויי צבעים, גודל והתנהגות והכל בזמן אמת. יתרון נוסף לעבודה עם Storybook הוא שכולם עובדים עם מקור אמת יחיד החל ממעצבים למפתחים ולמנהלי הפרוייקט כולם מיושרים לגבי הנראות ההתנהגות ומה הם מצפים לקבל.
כמובן שבתור מפתחים הרבה יותר נח לנו לעבוד עם קומפננטות שכבר עברו טסטים ורצות תקופה מסויימת בפרודקשיין ואין לנו צורך לכתוב קומפוננטות מחדש.
בפוסט זה ניצור קומפוננטות באמצעות Storybook (גרסא מספר 6) וריאקט (גרסא 16.13) ובסוף נעלה את storybook לשרת כאפליקציה עצמאית שתשמש כ-style guide.

צילום מסך של אפליקציית Storybook, המציג גרף היסטוגרמה עם תרשים עמודות ורשימת רכיבים בצד שמאל.

כדאי שיהיה לנו יותר קל לעקוב ולהבין אלה השלבים שנעשה בפוסט זה

  • ניצור פרוייקט באמצעות ריאקט
  • נוסיף את storybook/react 
  • ניצור ספריית קומפוננטות
  • נקסטם את ה-theme של Storybook
  • נעלה את הפרוייקט שיצרנו לאחסון

יצירת פרוייקט ריאקט עם StoryBook

נתחיל בצעד הראשון והפשוט ביותר,יצירת פרויקט ריאקט חדש.
לשם כך נשתמש ב- create-react-app.

 עכשיו שיש לנו פרוייקט ריאקט חדש שעובד השלב הבא הוא התקנת  StoryBook בפרוייקט שלנו.

הפקודה שעכשיו הרצנו יודעת לזהות אוטומטית את הפריימוורק שבו אנחנו משתמשים מקובץ ה- package.json ולהתקין את הגרסא התואמת של storybook. לאחר שסיימנו להריץ את הפקודות נוכל לראות את כל התלויות שהותקנו בקובץ package.json .
כדי לוודא שהכל עובד כמו שצריך נריץ גם את הפרוייקט ריאקט שלנו וגם את storybook.

התמונה מציגה צילום מסך של אתר Storybook, שהוא כלי לבניית רכיבי ממשק משתמש במנותק מההיגיון העסקי, הנתונים וההקשר של האפליקציה. 

* בפינה השמאלית העליונה יש לוגו של Storybook, עם ריבוע אדום ו"S" לבן בתוכו.
* מתחת ללוגו נמצא סרגל ניווט עם קישורים לדפים שונים באתר, לרבות "קנבס", "מסמכים" ו"חיפוש".
* אזור התוכן הראשי של העמוד הוא קופסה לבנה גדולה עם כותרת שקוראת "ברוכים הבאים לספר סיפורים" בטקסט שחור.
* מתחת לכותרת יש פסקה של טקסט שמסבירה מהו Storybook וכיצד ניתן להשתמש בו.
* יש גם מספר קישורים למקטעים שונים באתר, כולל "הגדרות קבועות מראש לכלים פופולריים", "סטיילינג", "תצורת בנייה", "נתונים", "תיעוד ספר סיפורים", "מדריכי עומק", "פרויקט GitHub" , ו"דיסקורד צ'אט".
*רקע הדף בצבע אפור בהיר.

בסך הכל, התמונה מעידה על כך ש-Storybook הוא כלי ידידותי למשתמש ומאורגן היטב לבניית רכיבי ממשק משתמש, עם ממשק ברור ותמציתי שמקל על הניווט ומציאת המידע הדרוש לך.

סיפורים ב-stoybook

אחרי שסיימנו עם כל ההתקנות הגיע הזמן שניצור את הקומפוננטות שלנו ואת הסיפורים שלהם. סיפורים? הכוונה ל stories 🙂
בחרתי להראות דוגמא של כפתור מכיוון שיחסית זאת קומפוננטה פשוטה אך עם זאת יש בה הרבה ״בשר״, נוכל להעביר פרופס שונים, עיצוב שונה וגם נראה מה קורה באינטרקציה של המשתמש עם הכפתור(לדוגמא קליק).

לכל קומפוננטה יהיו לנו 3 קבצים

  • קובץ של הקומפוננטה עצמה-js 
  • קובץ סטייל- css,scss או מה שנבחר
  • קובץ stories
התמונה מציגה קטע קוד עם רשימה של קובצי JavaScript, כולל button.css, Button.js ו-Buton.stories.js, ברקע אפור כהה עם טקסט ירוק וצהוב.

לאחר שיצרנו את הקבצים הגיע הזמן להתחיל לרשום קצת קוד
בואו נראה את הקובץ Button.js ונעבור עליו

בקוד למעלה בעצם יש לנו כפתור די פשוט שיודע לקבל כמה משתנים
primary, backgroundColor, size, label, onClick ולפיהם יש לו התנהגות או עיצוב שונה. מקווה שהקוד מובן וקריא לא רואה צורך להרחיב עליו כי אין שם משהו מסובך.
ב-storybook שלנו נרצה את היכולת לשחק עם הפרופס השונים ולראות איך הכפתור יתנהג ולקחת את הקוד שמתאים לנו או לדעת מה הסט יכולות של אותו כפתור.
הגיע הזמן לחלק המעניין, כתיבת ה- stories  
לפני שנצלול לתוך הנושא הזה חשוב לציין שה- stories יקחו את הproptypes שהגדרנו פה והם יהיו הדיפולט בתוך הסטורי שלנו.

ראשית שימו לב שהקובץ צריך להיות בפורמט הבא myComponent.stories.js
כדי שיהיה לנו כל מה שצריך כדי להתחיל נעשה import לריאקט ולקומפוננטה שלנו. לאחר מכן נבנה את האובייקט הראשי שאותו נייצא ובתוכו יהיה

  • title– זה יהיה השם הראשי של הקומפוננטה (שימו לב שה-example שלפני ה- /  מייצג סוג של group שתחתיו ישב הכפתור)
  • component- הקומפוננטה אותה אנחנו רוצים להציג
  •  argTypes – אופציונאלי, דרכו ניתן לשייך לפרופ מסויים מצב תצוגה.
  • ניתן גם להוסיף args, פרמטרים ודקורטורים- מומלץ להסתכל על כל האפשרויות בדוקיומנטציה של StoryBook 
התמונה מציגה צילום מסך של אפליקציית Storybook, עם רשימת אפשרויות משמאל ואזור קנבס מימין, הכולל כפתור ראשי וצבע רקע.

בתחתית המסך יש לנו את כל הפרופס שהעברנו לקומפוננטה ואת היכולת לשנות אותם ולראות בזמן אמת מה קורה לכפתור.
מעבר לאופציה של שינויי הפרופס בתחתית המסך ישנם מצבים שכפתור מסויים נמצא בשימוש רחב במספר מצבים למשל כפתור במצב onSuccess primary כפתור גדול, כפתור קטן וכו.
בשביל לראות את המצבים האלה מוגדרים מראש יש לנו את האופציה לתת תתי מצבים בהם נגדיר default Values וניצור מצב ספציפי של הקומפוננטה וניתן לו שם.
תוכלו לראות את זה בתמונה הנל. יצרנו טמפלייט של הכפתור שלנו ואז יצרנו סוג של שכפול של הכפתור והגדרנו מה הפרופס שאנחנו רוצים כדי להגיע למצב מסויים ונתנו לו שם.
אז ראינו איך אנחנו יכולים לשחק עם מצבי סטייט שונים ועם סטייל שונה ואיך אנחנו יכולים לשנות אותם. אבל איך נדמה לחיצה על הכפתור? אולי לא שמתם לב אבל כבר עשינו את זה. כל מה שהיינו צריכים לעשות זה להעביר פרופ לפונקציה ולשייך אותו לאיבנט onClick. כעת נוכל לראות את זה קורה תחת הטאב Actions

התמונה מציגה צילום מסך של דף אינטרנט עם רשימת קוד וכפתור אדום שכותרתו "כפתור ראשי" בפינה השמאלית העליונה.

הטמעת הקומפוננטה

אחרי ששיחקנו קצת עם הקומפוננטה והגענו לעיצוב שרצינו או למדנו מספיק מה היכולות שלה הגיע הזמן להטמיע אותה בקוד שלנו. כל מה שנצטרך לעשות הוא לעבור לטאב של Docs ללחוץ על show code ואז יפתח לנו חלונית עם חתיכת קוד שנצטרך לשים אצלינו וזהו!
מתחת לזה אנחנו יכולים לראות שוב את כל הפרופס שאפשר להעביר לקומפוננטה ולשחק עם זה בזמן אמת.

התמונה מציגה צילום מסך של דף תיעוד של Storybook עבור רכיב כפתור ראשי, עם קטע קוד ותצוגה מקדימה של הכפתור.

שינוי ערכת נושא

אחד הדברים שאני אוהב הוא dark mode יש כאלה שפחות מתחברים ואוהבים את הדיפולט אבל כדאי לדעת שגם ב- StoryBook יש לנו את האופציה לשנות את ערכת הנושא. בואו נראה איך עושים את זה.
ראשית נוודא שהחבילות האלה מותקנות (הן אמורות להיות ) ואם לא נוסיף אותן

yarn add --dev @storybook/addons @storybook/theming

לאחר מכן בתוך התיקייה של Storybook נייצר את הקובץ  manager.js ובתוכו נשים את הקוד הבא.
שימו לב שאנחנו מחליפים ערכת עיצוב אנחנו דורסים את הקודמת ולא נעשה איחוד של שתי הערכות.

בדוגמא מעל השתמשנו בערכה מוכנה שמגיעה מ- storybook אך ניתן גם להכין קובץ סטיילינג אישי ולעשות לו import.

העלאה לפרודקשיין

ראשית נצטרך לבנות את Storybook כאפליקציה סטטית באמצעות ה- cli שהתקנו בהתחלה באמצעות הפקודה הבאה

yarn build-storybook -o ./path/to/build

פקודה זו תיצור לנו אפליקציה סטטית בנתיב שבחרנו. את התוכן שיש בתיקייה נוכל להעלות לכל שרת שנבחר
לפני זה נוכל לנסות להריץ את התיקייה לוקאלית לראות שהכל עובד באמצעות הפקודה הבאה

npx http-server ./path/to/build

לסיכום

בפוסט זה למדנו כיצד לבנות קומפוננטות אינטראקטיביות באמצעות Storybook ו- React. ראינו מה אפשרי לעשות ב- Storybook וכיצד לשלב את storybook כספריית קומפוננטות בפרוייקט שלנו.
פיתוח באמצעות Storybook משמש מקור אמת יחיד עבור מפתחים ומעצבים העובדים בצוות וניתן לשלב אותו עם כל הפרימוורקים המובילים. בפוסט זה עסקנו כמובן בריאקט.
תוכלו לראות את כל הקוד ולשחק עם הקומפוננטות בגיטהאב

אם אהבתם את המאמר אשמח אם תשתפו/תמליצו לאחרים, אם יש לכם שאלות או הערות תוכלו להשאיר אותם בתגובות מתחת או לפנות אלי בלינקדין
תודה שקראתם!

תגובה אחת

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *