
span לשעות..module.css, למשל hours.module.css. רק כך React יודעת שזה CSS Module.hours עם רקע linear-gradient ממג'נטה למג'נטה כהה, bright עם צבע לבן ומשקל bold, underlined עם text-decoration: underline, ו-larger עם גודל פונט גדול יותר.css ולא בייבוא הרגיל. React יוצרת לכל class מאפיין באובייקט, עם שם ייחודי לקומפוננט.className={css.bright}. כשצריך כמה classes משרשרים מחרוזות עם רווח, למשל css.hours ואחריו css.box. המחרוזת המתקבלת היא רשימת classes.bright, השם בפועל יהיה שונה..module.css לקומפוננט, לייבא אותו ולהחיל על רכיבים classes שלא יתנגשו עם קומפוננטים אחרים.הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על CSS Modules» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
טכניקה נוספת שיכולה להיות מאוד שימושית נקראת CSS Modules. הטכניקה הזאת באה לפתור את הבעיה של CSS ליקינג, הזליגת CSS. אנחנו ראינו שאנחנו לא יכולים סתם ככה להגדיר שם של תגית בקומפוננט אחד כעיצוב בגלל שזה ישפיע על כל הקומפוננטות.
התגית הזאת תצבע עבור כל הקומפוננטות או תוגדר עבור כל הקומפוננטות. כנ"ל קלאס, אם אני ממציא איזה קלאס בקומפוננטה א' ומישהו ממציא את הקלאס בקומפוננטה ב', יש פה התנגשות עם העיצובים, או שהוא יצבע בעיצוב שלי או שאני אצבע בעיצוב
שלו. אז הקונספט של CSS Modules בא לפתור את הבעיה הזאת. אז איך אנחנו מיישמים את זה?
קודם כל, בואו נוסיף לעצמנו איזשהו קומפוננטה שתגלם את זה. בואו נבנה ב-Support Area קומפוננטה שנקראת Hours והיא תראה לנו את השעות של הארגון, מתי הארגון פתוח, מתי הבית העסק פתוח וכדומה.
צירפנו, בואו נלך ל-Hours, ומה שאנחנו רוצים לעשות זה קודם כל בואו נעצב פה איזה משהו, נגדיר שכאן יש לנו Box, כמו תמיד, נגדיר שיש לנו כאן פסקה Opening Hours ונגדיר כאן איזה ואנחנו רוצים שהספן תכיל איזשהו עיצוב עבור השעות עצמם ובואו נניח אנחנו פתוחים מ-7 AM
עד 9 PM ובואו נרשום אחרי השעות איזשהו Sunday to Thursday גם ימים ויש לנו כרגע איזשהו קומפוננטה שמציגה לי מתי אנחנו פתוחים בואו נשים את זה בספורט יש לנו כאן את ה-Hours נחזור לפה והנה אנחנו רואים קומפוננטה אין לה שום עיצוב מיוחד כרגע ואנחנו רוצים להגדיר פה מספר עיצובים אנחנו רוצים להגדיר
עיצוב עבור כל הקומפוננטה אנחנו רוצים להגדיר עיצוב רק עבור השעות עצמם שהיו עם הקלאס ועוד כמה דברים אולי עיצוב עבור כל הפסקה זאת אומרת מה שאנחנו רוצים לעשות זה לבנות לעצמנו עיצובים ב-CSS ב-CSS שלנו שנמצא פה, נשים אותו אולי כאן בצד, אבל אנחנו לא רוצים
שהעיצובים האלה בשום אופן יתנגשו עם שום קומפוננטה אחרת. אז ראינו את הטכניקה בעבר של זה, אבל אנחנו הולכים לעשות טכניקה אחרת שנקראת CSS Modules.
אז הטכניקה של CSS Modules אומרת את הדבר הבא: קובץ של ה-CSS חייב להיות בעל הסיומת נקודה מודול נקודה CSS. לא תם CSS רגיל, הוא חייב להסתיים מודול נקודה CSS. רק ככה React יודעת שהטכניקה הזאת זה CSS מודול ותכף אתם תראו גם מה היא בעצם עושה.
הדבר הבא, אנחנו מגדירים קלאסים. אנחנו לא יכולים להגדיר פה אלמנט ניימס, אנחנו מגדירים רק קלאסים. אז הנה יש לנו פה את הקלאס Hours ובואו נניח שב-Hours יש לנו Background אימג' ליניאר גרדיאנט, בואו ניתן לו ממג'נטה לדארק מג'נטה.
הצאתי פה איזה משהו, אולי נשים אותו ככה ואז נוכל לראות. אורייט, ואנחנו רוצים עכשיו להתחיל להגדיר בו כל מיני קלאסים ולהשתמש בהם. אז בואו נניח שיש לנו את ה-Hours ובואו נניח שאנחנו רוצים איזה קלאס שישרת את הפסקה עצמה והוא יקרא Bright.
ויהיה לו Color White ויהיה לו Font Weight Bold. ובואו ניקח עוד אחד ונקרא לו underlined וניתן לו text decoration underlined בצורה כזאת, אורייט?
אז מה אנחנו צריכים לעשות? אז כאן אנחנו לא מבצעים את האימפורט בצורה הקלאסית הרגילה וגם כמובן השם של הקובץ הוא כבר שם אחר אז אנחנו מוחקים את זה ואנחנו מייבאים from הקובץ הזה שהיה נקרא hours.module.css, אנחנו מייבאים ממנו Object, זאת אומרת כאן אני כותב איזשהו Object, אני יכול לכתוב סתם איזשהו שם ABC. אני לא אקרא לו ABC,
אני אקרא לו או Classes מפני שיש לי פה אוסף Classes או פשוט סתם CSS. בואו נישאר רגע עם השם CSS. ומה שריאקט עושה, היא לוקחת כל קלאס שנמצאת פה בקובץ ויוצרת ממנה פרופרטי בתוך האובייקט הזה ונותנת לה שם ייחודי עבור הקומפוננט הזה בלבד. זאת אומרת שאם בעוד מקום בפרויקט
יהיה עוד איזשהו קומפוננט שאפילו מתכנת אחר בנה ויהיה בקומפוננט האחר קלאס underlined או bright או hours לא משנה אותו השמות שלי הם לא יהיו בסופו של דבר בעלות אותו השם עבור הקומפורנט הזה.
להם יהיה שם אחר. React משנה את השמות לפי הטכניקה הזאת. זה כל מה שהיא עושה, פשוט אומרת, עבור כל קומפורנט, אני נותנת לך את השמות ספציפית ששייכים לקומפורנט הזה.
עכשיו, איך אנחנו משתמשים בזה? אז השיטה הפשוטה, בואו ניקח נניח, יש לנו פה את הפסקה, ואנחנו רוצים לבוא ולתת class name, ובקלאס ניים להגיד שאנחנו רוצים ברייט אז ברייט זה מאפיין שנמצא בתוך css אני רושם css