- הוסף לסימניות
- #21
פרק שני
תכנות צד לקוח וקבצי הדפדפן.
תוכנת הדפדפן, דרכה אנו גולשים לאינטרנט, מסוגלת ליותר מאשר להציג טקסטים ותמונות בצורה "טיפשה".
היא מכילה גם יכולות לבצע חישובים בעצמה, לבדוק נתונים, לבצע שינויים בנתונים, הנפשות, שינויים גרפיים בתמונות ובטקסט וכו'.
כעקרון, ניתן להשתמש תמיד רק בקובץ HTML שיכיל את הכל [כן, כולל את התמונות עצמן...] ולא להזדקק לקבצי JS או CSS.
אז למה לחלק?
החלוקה נועדה [בעיקר] לשם חסכון בתעבורת רשת. [וגם כמובן לניהול נכון של הקוד]
אם יש לי קוד סקריפט בן 3000 שורות, שאמור לבוא לידי שימוש בכמה עמודים, חבל להעמיס ולשלוח אותו בכל עמוד שוב ושוב...
אבל אם נכתוב את הסקריפט בקובץ עם הסיומת JS, ובמקומו בעמוד ה HTML נשתול שורת קריאה אליו, אז לאחר הפעם הראשונה שבה הוא נטען לדפדפן, הדפדפן "יכיר" אותו, ושוב [בעמוד הבא הנזקק לו] הוא ישלוף אותו מהזכרון ולא יבקש אותו מהשרת.
כמו כן, אם אנו מעוניינים לבצע שינויים בקוד, נוכל לבצע אותם בעותק אחד, פעם אחת. ולא נצטרך לעבור על השינויים בכל העמודים.
אז מה זה תכנות צד לקוח?
כשאנו ממלאים שדה אימייל בצורה לא תיקנית, קופצת לנו הודעת אזהרה על כך
וכשאנו לוחצים "שלח" בקובץ ריק, נקבל כוכבית אדומה עם הערה מתאימה.
היכן נבדקו ערכי השדות הללו?
בעקרון ניתן לבדוק אותם בשרת, ולהחזיר את הדף עם הודעות השגיאה.
אך בכדי לחסוך בזמן ומשאבי רשת, נוכל לכתוב תסריטים / סקריפטים, שהדפדפן יבצע אותם, ובהם לתכנת פקודות חישובים ופעולות שייתבצעו בדף.
נוכל גם ליצור אובייקט שמחליף צבעים בצורה מעניינת
ליצור גלריה שתחליף תמונות בלחיצה על כפתורי ניווט
כל זה ייתבצע בדפדפן בלי לגשת לשרת.
זה תכנות בצד לקוח.
תכנות ג'אווה סקריפט.
השפה נכתבת בדומה לשפת C, עם כללים משלה כמובן. והיא שפה גמישה מאד.
בפרק על תכנות תסריטים נביא דוגמאות לתיכנות עם השפה המעניינת הזו.
קובץ נוסף המשמש את הדפדפן הוא קובץ CSS.
בכדי להסביר את תפקיד קובץ ה CSS, נקדים מעט על אפשרויות העיצוב הקיימות:
אם לצורך דוגמה אני יוצר טבלה ללקוח, המכילה פירוט הפעולות בחשבון הבנק.
יש באפשרותי לקבוע את מאפייני עיצוב הטבלה בכמה דרכים.
כדי להבין, נרענן את הזכרון למבנה טבלה ב HTML
קודם כל תגית table
בתוכה יש מספר תגיות tr המייצגות את השורות
בתוך כל תגית tr, ישנם מספר תגיות td המהוות עמודות.
[כמעט] לכל אובייקט HTML, יש מאפיין style המכיל את מאפייני העיצוב שלו.
היות וקשה מאד להדגים כאן בפורום את הדברים, המערכת כאן מעט מוגבלת ויש צורך בהמון טריקים כדי להסביר דוגמאות פשוטות.
אני ישתמש במערכת חיצונית המשמשת להדגמות של סקריפטים ועיצוב.
אני מקווה שהאתר פתוח לחסומים, אם נראה שלא, אנסה אולי להעלות קבצי HTML מצורפים [אבל זה יהיה קשה להבין כך]
המערכת נקראת jsfiddle, ונמצאת בכתובת הזו
לכל דוגמה שיוצרים, היא מייצרת קוד ייחודי בשורת הכתובת, וכך ניתן להעביר דוגמאות בקלות מאחד לשני.
היא מכילה 4 תיבות, המכילות את אובייקטי ה HTML, סקריפטים, ועיצוב. ותיבת תוצאה [result]
לאחר שינוי של מאפיין, יש ללחוץ על הכפתור RUN, והתוצאה תשתנה בהתאם.
אם רוצים לשלוח את השינויים למישהו, לוחצים על SAVE, ושולחים את הלינק החדש שנוצר.
אנו נבנה אובייקט טבלה בת שני תיבות, ונקבע לכל תיבה מאפיינים שונים
לא נשתמש ב CSS, וגם חלון הסקריפטים יישאר נקי לעת עתה.
כנסו ללינק http://jsfiddle.net/r8V8L/
יש שם טבלה כשאת מאפיינייה הגדרתי בתוך ה HTML עצמו עבור כל תא ותא בנפרד
יש שימוש במאפייני מיסגרת, מאפייני רקע, וצבע הטקסט.
יש שימוש בהגדרת צבע מפורשת [red, blue] וגם בקוד צבע מקוצר [red green blue#]
בצורת תיכנות כזו, במידה ונרצה ליצור טבלה אחידה, האם נזדקק לכתוב תגית style עבור כל אובייקט? תגית שתחזור על עצמה לחינם?
ממש לא! לשם כך יש לנו אפשרות כללית יותר, והיא, ליצור תגית style שתחול על העמוד לפי סלקטורים.
אם אני יגדיר בה שם של אובייקט, אוכל לקבוע את מאפייניו בתוך סוגריים מסולסלות, בדיוק כאילו הייתי כותב בתוך כל תגיות הסטייל של אותו סוג אובייקט.
לשם הדגמה: אוסיף מספר אובייקטים ואקבע תגית סטייל כללית
בלינק הזה: http://jsfiddle.net/r8V8L/2/
שימו לב להגדרות שחלו על כל סוגי האובייקטים.
ומה אם אני מעוניין להגדיר באותה תגית הגדרות לאובייקט מסויים או למספר אובייקטים?
לשם כך ישנו מאפיין id ומאפיין class.
את המאפיין id נותנים לאובייקט ייחודי, כל id יופיע בעמוד פעם אחת בלבד [כמו מספר תעודת זהות]
את המאפיין class נותנים לכל אובייקט שמעוניינים להחיל עליו את אותם מאפייני קלאס.
בהגדרות הסטייל, שמים סולמית לפני ה ID, ונקודה לפני הקלאס.
הנה דוגמה http://jsfiddle.net/r8V8L/3/
כן נתתי ID לתגית P, וקלאס כהה ובהיר במחזוריות לטבלה
שימו לב: הרקע של אחת התיבות חריג! וזאת מפני שיש לה תגית סטייל מפורשת אישית משל עצמה, הגוברת על הגדרות העיצוב הכלליות.
וכאן מגיע מקומו של קובץ CSS
אם יש לי מספר עמודים באתר, ובהם אובייקטים כלליים זהים [הגדרות הגריד, תפריטים, כותרות וכו'] אין טעם לשים בכל עמוד שוב ושוב את תגית הסטייל.
לשם כך שמים את ההגדרות בקובץ CSS, ומוסיפים במסמך קישור לקובץ.
וכך, אם בוקר משמים אחד החלטתי להפתיע את גולשי האתר שלי, אוכל לשנות את סגנון האתר מקצה לקצה בקובץ CSS יחיד, ופתאום האתר כולו יקבל צורה חדשה.
תכנות צד לקוח וקבצי הדפדפן.
תוכנת הדפדפן, דרכה אנו גולשים לאינטרנט, מסוגלת ליותר מאשר להציג טקסטים ותמונות בצורה "טיפשה".
היא מכילה גם יכולות לבצע חישובים בעצמה, לבדוק נתונים, לבצע שינויים בנתונים, הנפשות, שינויים גרפיים בתמונות ובטקסט וכו'.
כעקרון, ניתן להשתמש תמיד רק בקובץ HTML שיכיל את הכל [כן, כולל את התמונות עצמן...] ולא להזדקק לקבצי JS או CSS.
אז למה לחלק?
החלוקה נועדה [בעיקר] לשם חסכון בתעבורת רשת. [וגם כמובן לניהול נכון של הקוד]
אם יש לי קוד סקריפט בן 3000 שורות, שאמור לבוא לידי שימוש בכמה עמודים, חבל להעמיס ולשלוח אותו בכל עמוד שוב ושוב...
אבל אם נכתוב את הסקריפט בקובץ עם הסיומת JS, ובמקומו בעמוד ה HTML נשתול שורת קריאה אליו, אז לאחר הפעם הראשונה שבה הוא נטען לדפדפן, הדפדפן "יכיר" אותו, ושוב [בעמוד הבא הנזקק לו] הוא ישלוף אותו מהזכרון ולא יבקש אותו מהשרת.
כמו כן, אם אנו מעוניינים לבצע שינויים בקוד, נוכל לבצע אותם בעותק אחד, פעם אחת. ולא נצטרך לעבור על השינויים בכל העמודים.
אז מה זה תכנות צד לקוח?
כשאנו ממלאים שדה אימייל בצורה לא תיקנית, קופצת לנו הודעת אזהרה על כך
וכשאנו לוחצים "שלח" בקובץ ריק, נקבל כוכבית אדומה עם הערה מתאימה.
היכן נבדקו ערכי השדות הללו?
בעקרון ניתן לבדוק אותם בשרת, ולהחזיר את הדף עם הודעות השגיאה.
אך בכדי לחסוך בזמן ומשאבי רשת, נוכל לכתוב תסריטים / סקריפטים, שהדפדפן יבצע אותם, ובהם לתכנת פקודות חישובים ופעולות שייתבצעו בדף.
נוכל גם ליצור אובייקט שמחליף צבעים בצורה מעניינת
ליצור גלריה שתחליף תמונות בלחיצה על כפתורי ניווט
כל זה ייתבצע בדפדפן בלי לגשת לשרת.
זה תכנות בצד לקוח.
תכנות ג'אווה סקריפט.
השפה נכתבת בדומה לשפת C, עם כללים משלה כמובן. והיא שפה גמישה מאד.
בפרק על תכנות תסריטים נביא דוגמאות לתיכנות עם השפה המעניינת הזו.
קובץ נוסף המשמש את הדפדפן הוא קובץ CSS.
בכדי להסביר את תפקיד קובץ ה CSS, נקדים מעט על אפשרויות העיצוב הקיימות:
אם לצורך דוגמה אני יוצר טבלה ללקוח, המכילה פירוט הפעולות בחשבון הבנק.
יש באפשרותי לקבוע את מאפייני עיצוב הטבלה בכמה דרכים.
כדי להבין, נרענן את הזכרון למבנה טבלה ב HTML
קודם כל תגית table
בתוכה יש מספר תגיות tr המייצגות את השורות
בתוך כל תגית tr, ישנם מספר תגיות td המהוות עמודות.
[כמעט] לכל אובייקט HTML, יש מאפיין style המכיל את מאפייני העיצוב שלו.
היות וקשה מאד להדגים כאן בפורום את הדברים, המערכת כאן מעט מוגבלת ויש צורך בהמון טריקים כדי להסביר דוגמאות פשוטות.
אני ישתמש במערכת חיצונית המשמשת להדגמות של סקריפטים ועיצוב.
אני מקווה שהאתר פתוח לחסומים, אם נראה שלא, אנסה אולי להעלות קבצי HTML מצורפים [אבל זה יהיה קשה להבין כך]
המערכת נקראת jsfiddle, ונמצאת בכתובת הזו
לכל דוגמה שיוצרים, היא מייצרת קוד ייחודי בשורת הכתובת, וכך ניתן להעביר דוגמאות בקלות מאחד לשני.
היא מכילה 4 תיבות, המכילות את אובייקטי ה HTML, סקריפטים, ועיצוב. ותיבת תוצאה [result]
לאחר שינוי של מאפיין, יש ללחוץ על הכפתור RUN, והתוצאה תשתנה בהתאם.
אם רוצים לשלוח את השינויים למישהו, לוחצים על SAVE, ושולחים את הלינק החדש שנוצר.
אנו נבנה אובייקט טבלה בת שני תיבות, ונקבע לכל תיבה מאפיינים שונים
לא נשתמש ב CSS, וגם חלון הסקריפטים יישאר נקי לעת עתה.
כנסו ללינק http://jsfiddle.net/r8V8L/
יש שם טבלה כשאת מאפיינייה הגדרתי בתוך ה HTML עצמו עבור כל תא ותא בנפרד
יש שימוש במאפייני מיסגרת, מאפייני רקע, וצבע הטקסט.
יש שימוש בהגדרת צבע מפורשת [red, blue] וגם בקוד צבע מקוצר [red green blue#]
בצורת תיכנות כזו, במידה ונרצה ליצור טבלה אחידה, האם נזדקק לכתוב תגית style עבור כל אובייקט? תגית שתחזור על עצמה לחינם?
ממש לא! לשם כך יש לנו אפשרות כללית יותר, והיא, ליצור תגית style שתחול על העמוד לפי סלקטורים.
אם אני יגדיר בה שם של אובייקט, אוכל לקבוע את מאפייניו בתוך סוגריים מסולסלות, בדיוק כאילו הייתי כותב בתוך כל תגיות הסטייל של אותו סוג אובייקט.
לשם הדגמה: אוסיף מספר אובייקטים ואקבע תגית סטייל כללית
בלינק הזה: http://jsfiddle.net/r8V8L/2/
שימו לב להגדרות שחלו על כל סוגי האובייקטים.
ומה אם אני מעוניין להגדיר באותה תגית הגדרות לאובייקט מסויים או למספר אובייקטים?
לשם כך ישנו מאפיין id ומאפיין class.
את המאפיין id נותנים לאובייקט ייחודי, כל id יופיע בעמוד פעם אחת בלבד [כמו מספר תעודת זהות]
את המאפיין class נותנים לכל אובייקט שמעוניינים להחיל עליו את אותם מאפייני קלאס.
בהגדרות הסטייל, שמים סולמית לפני ה ID, ונקודה לפני הקלאס.
הנה דוגמה http://jsfiddle.net/r8V8L/3/
כן נתתי ID לתגית P, וקלאס כהה ובהיר במחזוריות לטבלה
שימו לב: הרקע של אחת התיבות חריג! וזאת מפני שיש לה תגית סטייל מפורשת אישית משל עצמה, הגוברת על הגדרות העיצוב הכלליות.
וכאן מגיע מקומו של קובץ CSS
אם יש לי מספר עמודים באתר, ובהם אובייקטים כלליים זהים [הגדרות הגריד, תפריטים, כותרות וכו'] אין טעם לשים בכל עמוד שוב ושוב את תגית הסטייל.
לשם כך שמים את ההגדרות בקובץ CSS, ומוסיפים במסמך קישור לקובץ.
וכך, אם בוקר משמים אחד החלטתי להפתיע את גולשי האתר שלי, אוכל לשנות את סגנון האתר מקצה לקצה בקובץ CSS יחיד, ופתאום האתר כולו יקבל צורה חדשה.
הנושאים החמים