1 00:00:00,000 --> 00:00:02,700 [Powered by Google Translate] [שבוע 9, המשך] 2 00:00:02,700 --> 00:00:05,160 [דוד י מלאן - אוניברסיטת הרווארד] 3 00:00:05,160 --> 00:00:07,020 [זה CS50. - CS50.TV] 4 00:00:07,940 --> 00:00:13,340 >> זה CS50. זה סוף השבוע 9. תודה רבה. 5 00:00:13,340 --> 00:00:15,310 לבסוף. שבוע 9. יש לי את זה. 6 00:00:15,310 --> 00:00:18,590 היום אנחנו ממשיכים בשיחתנו על תכנות אינטרנט 7 00:00:18,590 --> 00:00:21,660 עם עין לכיוון פרויקט הגמר, לא בגלל שיש לך לעשות משהו מבוסס אינטרנט 8 00:00:21,660 --> 00:00:25,610 לפרויקט גמר אבל, כי גם לפרויקטי גמר או אחרי CS50 9 00:00:25,610 --> 00:00:29,000 זה בהחלט הכיוון שבו תוכנות מודרניות הולכות. 10 00:00:29,000 --> 00:00:31,770 ובכל זאת זה לא ממש דבר קל. 11 00:00:31,770 --> 00:00:35,040 למעשה, אחד הדברים הקשים ביותר לעשות הוא ההיבט של עיצוב. 12 00:00:35,040 --> 00:00:38,600 >> לדוגמה, על ידי עיצוב אנו מתכוונים למעשה מקבלים ממשק המשתמש 13 00:00:38,600 --> 00:00:40,420 או חווית המשתמש נכון. 14 00:00:40,420 --> 00:00:43,200 אני מעז לומר - ואנחנו יודעים מסט הבעיה אחרונה 15 00:00:43,200 --> 00:00:45,960 כאשר מעטים מכם שודרו תלונותיך בעניין איזושהי תוכנה 16 00:00:45,960 --> 00:00:49,000 או חומרה שמקוממת אותך, בין אם בקמפוס ומחוצים - 17 00:00:49,000 --> 00:00:51,930 יש הרבה אתרים שם בחוץ, יש הרבה חומרה שם בחוץ, 18 00:00:51,930 --> 00:00:53,900 זה סוג של מבאס. 19 00:00:53,900 --> 00:00:58,730 אבל המציאות היא שעושה דברים שהם קלים לשימוש עדיין הם בכל זאת חזקה 20 00:00:58,730 --> 00:01:00,550 הוא אתגר קשה מאוד. 21 00:01:00,550 --> 00:01:03,680 אז להיום שאלתי את יוסף וטומי להצטרף אליי כאן 22 00:01:03,680 --> 00:01:06,680 כדי שנוכל לנהל שיחה, גם על עיצוב 23 00:01:06,680 --> 00:01:09,090 ואילו סוגים של תהליכי חשיבה צריכים להתחיל עוברים בראש שלך 24 00:01:09,090 --> 00:01:12,040 בעת עיצוב הפרויקטים הסופיים שלך, מאמציך לעתיד. 25 00:01:12,040 --> 00:01:15,040 ואז עם העזרה של טומי אנחנו מסתכלים על חלק מפרטי היישום. 26 00:01:15,040 --> 00:01:18,440 איך אתה יכול לקבל קצת חזון על נייר או בראש שלך 27 00:01:18,440 --> 00:01:20,760 כי אז אתה יכול לבצע את תכניתי 28 00:01:20,760 --> 00:01:24,030 באמצעות כמה מהטכנולוגיות והטכניקות שרק התחלנו לדבר עליו, 29 00:01:24,030 --> 00:01:29,080 כלומר JavaScript ומשהו אפילו חדש יותר, כלומר AJAX, JavaScript אסינכרוני. 30 00:01:29,080 --> 00:01:32,950 זה מאפשר לך ליצור את כל דינמי יותר של ממשק משתמש 31 00:01:32,950 --> 00:01:35,780 על ידי ההבאה עוד ועוד נתונים בהדרגה משרת. 32 00:01:35,780 --> 00:01:38,560 כך אוכל לראות כמה מהקטעים האלה, כמו גם היום. 33 00:01:38,560 --> 00:01:41,800 במאמר מוסגר, אם אתם מעוניינים בריכוז במדעי מחשב 34 00:01:41,800 --> 00:01:45,010 או minoring במדעי מחשב, יודע שזה יום שישי בצהריים 35 00:01:45,010 --> 00:01:48,750 במקסוול דבורקין 221 יהיה אירוע פיצה 36 00:01:48,750 --> 00:01:50,780 בו תוכל ללמוד קצת יותר על מדעי מחשב. 37 00:01:50,780 --> 00:01:54,860 בדרכך החוצה היום תוכל לאסוף את מדריך הלא רשמי לCS באוניברסיטת הרווארד. 38 00:01:54,860 --> 00:01:57,290 אנחנו נשים אותו בפחי האשפה מחוץ בגובה מותנים 39 00:01:57,290 --> 00:01:59,750 כך שאם תרצה לתפוס את זה וללמוד קצת יותר על CS, 40 00:01:59,750 --> 00:02:02,480 שיהיה שם בשבילך כמו שזה היה בשבוע 0. 41 00:02:02,480 --> 00:02:06,500 כמו כן, אם ברצונך להצטרף אלינו לארוחת צהריים ביום שישי CS50 בשעת 1:15 בערב, 42 00:02:06,500 --> 00:02:09,800 הראש לcs50.net/lunch. 43 00:02:09,800 --> 00:02:13,260 בלי עיכובים נוספים, אני נותן לך בחור ההוראה יוסף אונג. 44 00:02:13,260 --> 00:02:19,190 היי. [מחיאות כפות] 45 00:02:19,190 --> 00:02:20,770 תודה. 46 00:02:20,770 --> 00:02:24,780 הפעם הראשונה שלמדתי על עיצוב הייתה בכיתה כאן נקראת CS179. 47 00:02:24,780 --> 00:02:28,040 >> הפרוף בזמן ספר לנו את הסיפור על פרוף אחר 48 00:02:28,040 --> 00:02:31,640 שהלך לבית מלון והשתמשתי ברזים. 49 00:02:31,640 --> 00:02:35,630 מישהו יכול להגיד לי מה את 2 כפתורים שעל ימין ועל השמאל עושה? 50 00:02:35,630 --> 00:02:39,080 [תלמיד] חם וקר. >> חם וקר. טוב. 51 00:02:39,080 --> 00:02:41,430 מה אתה בדרך כלל מצפה, נכון? 52 00:02:41,430 --> 00:02:46,960 הפרוף הזה לאחר השימוש בברז רוצה להתקלח, והוא ממשיך להשתמש בזה. 53 00:02:46,960 --> 00:02:51,310 הוא חושב שהשמאל ושל שני הצדדים הם לחמים וקר, נכון? 54 00:02:51,310 --> 00:02:55,470 אבל מישהו יכול להגיד לי מה אלה בעצם עושים? 55 00:02:55,470 --> 00:02:58,060 כל ידות? 56 00:02:58,060 --> 00:03:01,740 [תגובת תלמיד לא נשמעה] >> הצעה אחת היא? 57 00:03:01,740 --> 00:03:05,860 [תגובה בלתי נשמעת תלמיד] טמפרטורה? >> 58 00:03:05,860 --> 00:03:10,460 אז אחד מהם שולט בטמפרטורה והפקדים האחרים? >> [תלמיד] לחץ מים. 59 00:03:10,460 --> 00:03:12,350 לחץ מים. טוב. 60 00:03:12,350 --> 00:03:15,100 הפרוף הזה נכנס לזה, וחושב שהם שולטים חמים וקרים, 61 00:03:15,100 --> 00:03:21,470 הופך את האדם הנכון, שהוא לדעתו לחם, כל הדרך עד 62 00:03:21,470 --> 00:03:23,560 בגלל שהוא רוצה לקחת למקלחת חמה. 63 00:03:23,560 --> 00:03:28,100 ובכן, אלה לא באמת מתאימים, אז הוא מקבל חוויה מאוד לא כיף זה 64 00:03:28,100 --> 00:03:31,110 להיות במקלחת קרה, וכולנו יודעים מה הרגשה. 65 00:03:31,110 --> 00:03:33,620 זו היא דוגמה לעיצוב ליקוי. 66 00:03:33,620 --> 00:03:37,040 מה שאני מתכוון היא שהציפייה שלו מהברז 67 00:03:37,040 --> 00:03:39,420 לא תאם את מה שיצא מהמקלחת, 68 00:03:39,420 --> 00:03:41,780 וזה די מצער עבורו. 69 00:03:41,780 --> 00:03:44,990 אז זה הוא דוגמה לעיצוב ליקוי שקורה בחיים אמיתיים. 70 00:03:44,990 --> 00:03:48,020 אבל אנחנו רואים כל מינים אלה, כמו גם אחרים. 71 00:03:48,020 --> 00:03:50,390 מן הסתם אנחנו לא מעריצים של מערכת הרכבת התחתית. 72 00:03:50,390 --> 00:03:55,560 זוהי מערכת רכבת תחתית ממש בלונדון, שאומרת, "הכפתור הזה הוא לא בשימוש." 73 00:03:55,560 --> 00:04:00,220 למה זה גם שם? למה בכלל אכפת לנו? 74 00:04:00,220 --> 00:04:02,810 כשאני הייתי ילד, להיות אחד מתמצא טק בבית, 75 00:04:02,810 --> 00:04:05,050 בכל הפעם שהמחשב יתרסק, האמא שלי הייתה מגיעה אליי, 76 00:04:05,050 --> 00:04:07,060 מראה לי את המסך הזה ושואל אותי מה קרה. 77 00:04:07,060 --> 00:04:09,210 >> אפילו אני לא יודע מה זה אומר. 78 00:04:11,890 --> 00:04:14,700 [שחוק] מה? 79 00:04:16,950 --> 00:04:18,019 [שחוק] 80 00:04:18,720 --> 00:04:23,050 לפעמים אנחנו מרגישים כמו מפתחי תוכנה הם רק חכותינו. 81 00:04:23,050 --> 00:04:28,460 ככל שמשתמש אנחנו כמו, "מה קורה? מישהו אומר לנו". 82 00:04:28,460 --> 00:04:32,140 זה הכל מסתכם בעניין של עיצוב. 83 00:04:32,140 --> 00:04:34,650 עיצוב, כפי שניתן לראות, אינו אך ורק על אסתטיקה, 84 00:04:34,650 --> 00:04:37,230 זה לא על איך דברים נראים. 85 00:04:37,230 --> 00:04:41,720 אנו רואים כאן שזה קצת קופץ מעל כאן למעשה נראה די נחמד. 86 00:04:41,720 --> 00:04:45,290 יש לו טיפת צל ברקע, יש גבול רדיוסים קורים. 87 00:04:45,290 --> 00:04:47,550 זה סוג של די. 88 00:04:47,550 --> 00:04:51,480 זה לא תוכנן ממש טוב, כי זה לא מאוד ידידותי למשתמש. 89 00:04:51,480 --> 00:04:54,920 זה מוקפץ קטן שעולה לא ממש נתן לי שום מידע 90 00:04:54,920 --> 00:04:58,450 על מה שקורה, זה לא אומר לי כלום כמשתמש 91 00:04:58,450 --> 00:05:01,400 על איך להתאושש מטעות ההיא. 92 00:05:01,400 --> 00:05:05,190 אנחנו רוצים לחשוב על דברים שעיצוב הוא לא. 93 00:05:05,190 --> 00:05:06,670 ראשית, זה לא אסתטיקה. 94 00:05:06,670 --> 00:05:10,800 זה גם לא תוחב היישום שלך עם טונות של פונקציונליות מיותרת. 95 00:05:10,800 --> 00:05:14,890 אם אתה מסעדה תאילנדית, כנראה שאתה לא רוצה להיות רופא שיניים באותו הזמן. 96 00:05:14,890 --> 00:05:17,720 ועם שאלות של פייסבוק, שאנשים רבים לא השתמשו בו 97 00:05:17,720 --> 00:05:21,130 וזה לא היה ממש בליבה של מה שהם בנו. 98 00:05:21,130 --> 00:05:24,200 ואז זה נחמד לחשוב על לא כל כך הכמות של הדברים 99 00:05:24,200 --> 00:05:26,390 שאתה מכניס ליישום שלך, אבל את האיכות 100 00:05:26,390 --> 00:05:28,910 ואיך אתה עושה שחוויית המשתמש טוב יותר 101 00:05:28,910 --> 00:05:32,540 למעשה על ידי שיפור על מה שכבר יש לך. 102 00:05:32,540 --> 00:05:37,040 >> בקליפת האגוז, עיצוב אומר לנו מה אנחנו צריכים לבנות. 103 00:05:37,040 --> 00:05:41,950 לדוגמה, אם אנחנו בונים משהו שנתן לנו לחפש את הדברים, 104 00:05:41,950 --> 00:05:45,970 כמו גוגל, למשל, האם עלינו לעשות את דברים בצורה 105 00:05:45,970 --> 00:05:48,950 שמחייב את המשתמש לקחת הרבה קליקים כדי להגיע למה שהם רוצים, 106 00:05:48,950 --> 00:05:52,580 או שעל לעשות את זה בדרך מסוימת, לדוגמה, עם Google מיידי או השלמה אוטומטית 107 00:05:52,580 --> 00:05:54,970 המאפשר לנו להגיע לתוצאות שלנו מהר יותר? 108 00:05:54,970 --> 00:05:58,740 הנדסה כרוכה, כמו טומי יראה לך, ממש בבניין זה. 109 00:05:58,740 --> 00:06:01,890 יש המון סוגים של עיצוב. 110 00:06:01,890 --> 00:06:06,070 לדוגמה, אם אתה בונה משהו לפרוס משהו 111 00:06:06,070 --> 00:06:09,770 במדינת העולם שלישית שאין בו הרבה חשמל או שהרבה טכנולוגיה, 112 00:06:09,770 --> 00:06:11,440 אתה צריך לתכנן את מה שאתה בונה 113 00:06:11,440 --> 00:06:14,210 בדרך שנותנת בקלות גישה לאנשים שם. 114 00:06:14,210 --> 00:06:18,290 אבל מה מיני החלטות עיצוב אחרות שאולי יש 115 00:06:18,290 --> 00:06:21,850 או עשוי להיות מעורב במשהו כזה? 116 00:06:23,690 --> 00:06:25,660 כן. אני רואה את יד. 117 00:06:25,660 --> 00:06:37,200 [תגובה בלתי נשמעת תלמיד] ימנית. >> בדיוק. נגישות היא דבר אחד. 118 00:06:37,200 --> 00:06:40,870 הרבה אנשים לא חושבים עליו, "מה עם המשתמשים שלי?" 119 00:06:40,870 --> 00:06:43,160 כמו הקצוות של שני הספקטרום. 120 00:06:43,160 --> 00:06:47,770 יש לי משתמשים שעשויים מוגבלות שאני לא חושב על 121 00:06:47,770 --> 00:06:50,590 ואני רק חושב על עיצוב למשתמש הכללי. 122 00:06:50,590 --> 00:06:52,630 האינטרנט נגיש לכולם בימינו, 123 00:06:52,630 --> 00:06:54,870 ואני צריך להיות בעיצוב לאנשים האלה גם כן. 124 00:06:54,870 --> 00:06:58,620 איזה סוג של החלטות עיצוב אחרות עשוי לגרום לך? 125 00:06:58,620 --> 00:07:00,690 כן. >> [תלמיד] עלות. 126 00:07:00,690 --> 00:07:02,680 תעלה. טוב מאוד. 127 00:07:02,680 --> 00:07:08,060 דבר נוסף שאנו יכולים לבסס את החלטות העיצוב שלנו הוא במחיר. 128 00:07:08,060 --> 00:07:13,130 אם אנחנו עסק, אתה רוצה לבנות משהו שלא לוקח הרבה עלות לייצר 129 00:07:13,130 --> 00:07:17,720 אבל יכול למכור במחיר גבוה במיוחד או יכול להביא לנו רווח. 130 00:07:17,720 --> 00:07:21,540 >> כל אלה הם הסוגים השונים של עיצוב, אבל כאשר אנחנו בונים משהו באינטרנט 131 00:07:21,540 --> 00:07:25,120 או כאשר אנחנו בונים משהו שכנראה לא עולה כל כך הרבה כדי לבנות את עכשיו, 132 00:07:25,120 --> 00:07:28,630 כמו יישומי אינטרנט - אתה לא צריך לזרוק הרבה הון לתוכו 133 00:07:28,630 --> 00:07:30,900 כדי לגרום למשהו שבאמת עובד - 134 00:07:30,900 --> 00:07:33,490 מה שאנחנו יותר מודאגים היא את חוויית המשתמש. 135 00:07:33,490 --> 00:07:36,390 אנחנו קוראים לעיצוב ממוקד משתמש זה. 136 00:07:36,390 --> 00:07:41,550 בעיקרו של דבר מה עיצוב ממוקד משתמש כרוך היא לשים את עצמכם בנעליו של המשתמשים שלך. 137 00:07:41,550 --> 00:07:44,870 אם מישהו נרשם למה שאני בונה, 138 00:07:44,870 --> 00:07:48,250 ברור שהם הגיעו ליישום המסוים שלי עם מטרה בראש, 139 00:07:48,250 --> 00:07:50,280 עם משימה שהם רוצים להשלים. 140 00:07:50,280 --> 00:07:53,650 והתפקיד שלך הוא לא רק כדי לסייע להם להשלים את המשימה ש 141 00:07:53,650 --> 00:07:57,930 אבל כדי לעזור להם להשלים את המשימה, כי באופן זה הוא יעיל, אינטואיטיבי, 142 00:07:57,930 --> 00:08:01,900 וכפי שחלק האדם אמר שם, נגיש. 143 00:08:01,900 --> 00:08:03,750 מה יעילות מתכוונת? 144 00:08:03,750 --> 00:08:08,050 יעילות אומרת כמה מהר זה המשתמש שלי להשלים את המשימה שניתנה הממשק שלי. 145 00:08:08,050 --> 00:08:11,650 זה לוקח הרבה קליקים עליהם כדי להגיע ממקום אחד למשנו? 146 00:08:11,650 --> 00:08:14,630 האם זה משעמם? האם הם צריכים לבצע הרבה משימות חוזרות ונשנות? 147 00:08:14,630 --> 00:08:17,140 אנחנו רוצים להפוך את התהליך ליעיל ככל האפשר 148 00:08:17,140 --> 00:08:20,070 כך שהם לא צריכים לעשות דברים מהסוג הזה. 149 00:08:20,070 --> 00:08:24,230 באשר לאינטואיטיביות, כלומר, לדוגמה, אם משתמש מביט הממשק שלי, 150 00:08:24,230 --> 00:08:27,240 זה קל להם להגיע ממקום למקום? 151 00:08:27,240 --> 00:08:30,390 האם קל להם להבין מה הם צריכים ללחוץ בממשק שלי 152 00:08:30,390 --> 00:08:33,770 כדי שהם ישיגו את המטרה או המשימה שהם רוצים להשיג? 153 00:08:33,770 --> 00:08:37,520 >> ולבסוף, כאיש אחד אמר שם, נגישות היא מאוד חשובה. 154 00:08:37,520 --> 00:08:39,640 [דובר זכר] זה מגיע לנגישות לדברים כמו חזון, 155 00:08:39,640 --> 00:08:42,740 כמו איך אני בעצם לעצב משהו למישהו שהוא עיוור? 156 00:08:42,740 --> 00:08:46,460 אה. עבור אנשים שאינו יכול לראות בכל, יש לנו משהו שנקרא קוראי מסך. 157 00:08:46,460 --> 00:08:49,070 מה שאתה צריך לעשות הוא שאתה צריך לבנות את אתר האינטרנט שלך באופן 158 00:08:49,070 --> 00:08:52,020 כך, למשל, טכנולוגיות מסוימות מה שאנו מכנים - 159 00:08:52,020 --> 00:08:53,590 יש הרבה דברים עכשיו. 160 00:08:53,590 --> 00:08:55,660 אני חושב שיש קוראי מסך הנקראים JAWS. 161 00:08:55,660 --> 00:08:58,410 הרבה דברים אלה מסתמכים על מה שאנו מכנים כללי אזור 162 00:08:58,410 --> 00:09:02,010 כדי לקרוא למשתמש את מה שנמצא בדף. 163 00:09:02,010 --> 00:09:05,480 עבור אותם אנשים שלא יכול לראות, אתה צריך לוודא שקוראי המסך הבא 164 00:09:05,480 --> 00:09:09,130 באמת יכול להרים את התוכן בדף ובאמת יכול להראות למשתמשים שלך, 165 00:09:09,130 --> 00:09:13,630 אם אתה לא יכול לראות, לפחות אתה עדיין יכול להבין את התוכן בדף. 166 00:09:13,630 --> 00:09:16,190 כן. אוקיי. 167 00:09:16,190 --> 00:09:23,410 מספיק לדבר על עיצוב טוב. בואו נדבר על עיצוב רע. 168 00:09:23,410 --> 00:09:25,220 אלה דברים שאתה לא צריך לעשות. 169 00:09:25,220 --> 00:09:27,890 האם מישהו יכול לספר לי על חוויותיהם עם קרייגסליסט 170 00:09:27,890 --> 00:09:32,190 ומה שהם חושבים זה לא כל כך גדול על העיצוב הזה? 171 00:09:33,690 --> 00:09:36,430 כן. >> [תלמיד] אני חושב שיש דברים רבים מדי באזור אחד. 172 00:09:36,430 --> 00:09:39,350 יותר מדי מילים, נכון? לחלוטין מכריע. 173 00:09:39,350 --> 00:09:42,400 אתה בא לדף זה ואתה ברכת עם חבורה שלמה של דברים עד כאן 174 00:09:42,400 --> 00:09:43,860 שאולי אפילו לא היה אכפת לך. 175 00:09:43,860 --> 00:09:47,010 לדוגמה, אתה גר במדינה אחת שלא מתחיל באות זו. 176 00:09:47,010 --> 00:09:48,690 בואו נגיד שאתה גר בטקסס או משהו. 177 00:09:48,690 --> 00:09:53,790 >> אתה צריך לגלול את כל הדרך למטה בדף כדי להגיע למיקום אתם נמצאים. 178 00:09:53,790 --> 00:10:00,320 אני מבוסטון, אז תן לי להסתכל במסצ'וסטס. איפה מסצ'וסטס? 179 00:10:00,320 --> 00:10:03,270 הו, זה ממש כאן. אה, זה בוסטון. אוקיי. 180 00:10:03,270 --> 00:10:09,070 בואו נסתכל על בוסטון. [שחוק] 181 00:10:09,070 --> 00:10:12,250 די מדהים, לא? 182 00:10:12,250 --> 00:10:16,400 דברים מביכים שם. [שחוק] 183 00:10:17,320 --> 00:10:19,470 בואו נגיד שאני מחפש מקום לגור. 184 00:10:19,470 --> 00:10:24,130 כמה אנשים באמת השתמש קרייגסליסט? טון שלך. 185 00:10:24,130 --> 00:10:30,960 ישנן דרכים די רעות להסתכל על זה, אבל בואו נסתכל על זה. 186 00:10:35,130 --> 00:10:38,970 מה ההבדל בין IMG ותמונה? מישהו יכול להגיד לי? 187 00:10:41,350 --> 00:10:42,830 למעשה אין שום הבדל. 188 00:10:42,830 --> 00:10:47,710 הם אומרים בדיוק את אותו דבר, אבל יש להם תוויות שונות עבורם מסיבה כלשהי. 189 00:10:48,980 --> 00:10:53,560 אם אני לוחץ על תמונה יש, שום דבר לא קורה בדף. 190 00:10:53,560 --> 00:10:57,490 יש לי בעצם ללחץ על חיפוש שוב למשהו שיקרה. 191 00:10:57,490 --> 00:11:02,430 מה יכול להיות החלטת עיצוב טובה יותר שאפשר לעשות שם? 192 00:11:03,820 --> 00:11:08,030 אם אני, שלחיצה על המסנן, אני כנראה רוצה לסנן לפי שפעולה מסוימת 193 00:11:08,030 --> 00:11:09,970 או שקטגוריה מסוימת. 194 00:11:09,970 --> 00:11:14,450 אז במקום שיצטרך ללחוץ שוב חיפוש, אני יכול פשוט לעשות באופן אוטומטי סינון 195 00:11:14,450 --> 00:11:17,060 סוג של סגנון גוגל בו הם עושים את זה באופן מיידי. 196 00:11:17,060 --> 00:11:20,440 [מלאן] אבל לא יוצר כפי שראינו אותם עד כה יש להגיש פיזי 197 00:11:20,440 --> 00:11:23,170 על ידי להכות Enter או לפחות לחיצת כפתור? 198 00:11:23,170 --> 00:11:26,830 כפי שראית אותם כל כך הרבה, אתה בעצם צריך ללחוץ שלח לעשות את הדברים האלה. 199 00:11:26,830 --> 00:11:30,090 >> אבל כמו טומי יראה לך בשנייה, שקיימים דרכים עבורך 200 00:11:30,090 --> 00:11:33,010 כך שכאשר אתה לוחץ על דבר שהוא יכול לשלוח באופן אוטומטי 201 00:11:33,010 --> 00:11:38,840 מה שאנו מכנים בקשת AJAX ולקבל נתונים הלוך ולסנן את תוצאות באופן מיידי. 202 00:11:38,840 --> 00:11:41,340 יש טונות של דברים שהם לא בסדר בממשק זה. 203 00:11:41,340 --> 00:11:43,530 [מלאן] אתה יכול לחפש קיימברידג'? 204 00:11:43,530 --> 00:11:47,030 יש משהו חריג במקצת כאן, איפה שאכפת קיימברידג' 205 00:11:47,030 --> 00:11:54,790 ועדיין אתה מקבל Westford, ספרינג היל, מערב ניוטון וכדומה. 206 00:11:54,790 --> 00:11:57,930 כנראה שלא אידיאלי. >> כנראה שלא אידיאלי. 207 00:11:57,930 --> 00:12:03,900 כיצד היינו יכול להפוך את החוויה של המשתמש טוב יותר בדף המסוים הזה? 208 00:12:03,900 --> 00:12:07,340 כן. >> [תלמיד] הוראות. 209 00:12:07,340 --> 00:12:09,500 אוקיי. הוראות באיזה סוג של תחושה? 210 00:12:09,500 --> 00:12:14,630 [תלמיד] לדוגמה, דבר למשתמשים חדשים שלא יודעים אפילו מה קרייגסליסט הוא 211 00:12:14,630 --> 00:12:17,320 או שאתה לא יודע מה אתה אמור לעשות. 212 00:12:17,320 --> 00:12:20,150 נכון. אז להסביר מה קרייגסליסט הוא בדף זה הוא חשוב. 213 00:12:20,150 --> 00:12:23,490 אנחנו ממש יכולים לדעת מה משתמשי דף זה הוא למעשה ל. 214 00:12:23,490 --> 00:12:27,090 אם אני רק ביקור הזה, אני רואה את כל חבורה של מיקומים. אני אפילו לא יודע למה הם מתכוונים. 215 00:12:27,090 --> 00:12:29,730 אבל יותר חשוב, פשוט מסתכל על ממשק זה, 216 00:12:29,730 --> 00:12:35,530 זוכר שהייתי צריך לגלול למטה המון דברים כדי למצוא קהילה מסוימת 217 00:12:35,530 --> 00:12:37,560 כי אני בעצם אכפת על זה. 218 00:12:37,560 --> 00:12:39,820 מה דרך מהירה יותר שאני יכול לעשות את זה? כן. 219 00:12:39,820 --> 00:12:43,290 [תלמיד] מחלק אותם למזרח, אזורי מערב. >> אוקיי. 220 00:12:43,290 --> 00:12:47,460 אני יכול לחלק אותם לקטגוריות נוספות שיכול לעזור לי לקבוע מהר יותר 221 00:12:47,460 --> 00:12:49,820 איך להגיע למקום מסוים ש. 222 00:12:49,820 --> 00:12:54,510 [תלמיד] שים את הרשימה נפתחת. >> ימני. אוקיי. 223 00:12:54,510 --> 00:12:58,240 אני יכול להשתמש בתפריט נפתח כי יש לנו בערכה קבועה של דברים 224 00:12:58,240 --> 00:13:00,100 ויכולנו להראות להם בתפריט נפתח. 225 00:13:00,100 --> 00:13:02,240 ככה זה לא תופס כל כך הרבה מקום על המסך. 226 00:13:02,240 --> 00:13:05,630 אבל אפילו יותר מזה, מה אנחנו יכולים לעשות? 227 00:13:05,630 --> 00:13:09,220 כן. >> [תגובת תלמיד לא נשמעה] >> אתה יכול להגיד את זה שוב? >> [תלמיד] תיבת חיפוש. 228 00:13:09,220 --> 00:13:11,260 כן, תיבת חיפוש. זה נהדר. 229 00:13:11,260 --> 00:13:16,430 מה שאנחנו באמת יכולים לעשות את זה אם אנחנו מסתכלים אחורה בשקופיות, תיבת החיפוש. 230 00:13:16,430 --> 00:13:21,520 השלמה אוטומטית. דרך קלה מאוד לחפש בתוצאות שאתה מכיר נמצאת בסט. 231 00:13:21,520 --> 00:13:25,980 אם אני אתחיל להקליד BO, רק יראו לי את כל התוצאות שיש להם בתוך BO שלהם. 232 00:13:25,980 --> 00:13:29,030 ככה אני בקלות יכול למצוא אחד המסוים שאני רוצה ללכת ל 233 00:13:29,030 --> 00:13:32,390 במקום שיצטרך לגלול רשימה גדולה באמת זה. 234 00:13:32,390 --> 00:13:37,450 >> אלה הם כל מיני פרות ממש נמוכים ומאיים שמישהו שמיישם קרייגסליסט 235 00:13:37,450 --> 00:13:42,500 בעצם יכול לעשות כדי להפוך את החוויה באתר הרבה יותר טוב למשתמש המסוים שלהם. 236 00:13:42,500 --> 00:13:46,370 אוקיי. מספיק לדבר על אתרים גרועים. 237 00:13:46,370 --> 00:13:49,410 בואו נדבר על פייסבוק. 238 00:13:50,880 --> 00:13:54,390 כאשר פייסבוק יצא, ובעיקר תמונות בפייסבוק, 239 00:13:54,390 --> 00:13:57,870 היו המון שירותים אחרים באותה התקופה שיכלה לעשות את אותם דברים בדיוק. 240 00:13:57,870 --> 00:14:00,740 הם יכולים לארגן את התמונות שלך באלבומים. 241 00:14:00,740 --> 00:14:03,360 מה אתה יכול לעשות הוא שאפשר לארגן אותם בקבוצות וכן. 242 00:14:03,360 --> 00:14:06,070 אתה יכול לארגן אותם לפי תאריך. אתה יכול לעשות את כל הדברים האלה במיוחד. 243 00:14:06,070 --> 00:14:11,710 אבל, האם מישהו יודע מה עשה בפייסבוק תמונות להתפוצץ בזמן שהוא יצא? 244 00:14:11,710 --> 00:14:15,080 כן. >> [סטודנטים] תגיות. תגיות. >> בדיוק. 245 00:14:15,080 --> 00:14:21,300 יש לנו כאן מילוא, שהוא הקמע של הכלב שלנו שבנדנה CS50. 246 00:14:21,300 --> 00:14:24,810 אתה יכול לראות שיש לנו תכונת התיוג הזה באמצע. 247 00:14:24,810 --> 00:14:28,240 ומה עשה תמונות בפייסבוק כל כך מעניינות מבחינת שימושיות 248 00:14:28,240 --> 00:14:34,130 הוא שזה למעשה אפשר לאנשים באמצעות זה לערב את חבריהם בתמונות שלהם. 249 00:14:34,130 --> 00:14:37,680 לפייסבוק, שכן אתר האינטרנט שלהם הוא בעיקר חברתי, 250 00:14:37,680 --> 00:14:40,750 זה קשור לבנייה מסוג זה אווירה החברתית. 251 00:14:40,750 --> 00:14:42,620 ששפר את החוויה של תמונות הרבה יותר 252 00:14:42,620 --> 00:14:46,390 כי הם באמת יכולים להתחיל לומר, "אלו הם קשרים בין אנשים, 253 00:14:46,390 --> 00:14:49,220 ואלה הם תמונות על אנשים שאתה באמת אכפת להם. " 254 00:14:49,220 --> 00:14:52,200 חלק מזה הוא גם נרקיסיזם מיון. 255 00:14:52,200 --> 00:14:54,980 אנשים אוהבים להיות מתויגים בתמונות ודברים כאלה. 256 00:14:54,980 --> 00:14:58,510 אמנם זה לא בהכרח תכונה אנושית טובה, 257 00:14:58,510 --> 00:15:01,910 באותו הזמן שהוא מבוסס על החלטות עיצוב טובות 258 00:15:01,910 --> 00:15:04,860 משום שאנשים באמת איכפת דברים כאלה. 259 00:15:04,860 --> 00:15:07,190 אז זה תמונות של פייסבוק. 260 00:15:07,190 --> 00:15:09,800 >> אבל בואו נדבר בפייסבוק באופן כללי יותר. 261 00:15:09,800 --> 00:15:13,400 אני בטוח שהרבה אנשים כאן יש דעות על פייסבוק, 262 00:15:13,400 --> 00:15:16,430 שני החלטות טובות והחלטות עיצוב עיצוב רעות. 263 00:15:16,430 --> 00:15:20,270 אז בואו לפרוק או להיות מאושר. 264 00:15:23,480 --> 00:15:26,450 נו באמת. אני יודע שכולכם להשתמש בפייסבוק. 265 00:15:26,450 --> 00:15:30,970 מישהו חייב לך משהו רע לומר או משהו טוב להגיד על זה. כן. 266 00:15:30,970 --> 00:15:35,060 [תלמיד] בערוץ החדשות יש הרבה דברים שאני לא ממש אכפת להם. 267 00:15:35,060 --> 00:15:37,740 ערוץ החדשות עושה מראה הרבה דברים שאולי לא אכפת להם. 268 00:15:37,740 --> 00:15:41,660 יש לך חברים בפייסבוק שלא פגשו במשך 2 או 3 שנים 269 00:15:41,660 --> 00:15:43,860 ואתה רואה את התוצאות של החדשות שלהם צצות בערוץ החדשות שלך 270 00:15:43,860 --> 00:15:45,870 ואתה לא באמת אכפת לו. 271 00:15:45,870 --> 00:15:48,700 פייסבוק בעצם עשה מאמץ כדי להפוך את זה יותר טוב, 272 00:15:48,700 --> 00:15:53,150 והם באמת ניסו לדחוף את התוצאות רלוונטיות לחלק העליון של ערוץ החדשות כמו של מנוח 273 00:15:53,150 --> 00:15:58,300 אז אתה בעצם רואה את דברים על ידי חברים אשר רלוונטיים לך או לחברים הקרובים שלך. 274 00:15:58,300 --> 00:16:01,110 עוד משהו? כן. 275 00:16:01,110 --> 00:16:06,400 [תגובת תלמיד לא נשמעה] >> אתה יכול להגיד את זה שוב? 276 00:16:06,400 --> 00:16:10,140 [תלמיד] המודעות הן יחסית צנועות. >> באיזה מובנת? 277 00:16:10,140 --> 00:16:16,370 [תגובה בלתי נשמעת תלמיד] אין להם אור על המסך, כמו דגלים. 278 00:16:16,370 --> 00:16:17,760 אוקיי. זה טוב. 279 00:16:17,760 --> 00:16:25,030 אם אתה זוכר את האינטרנט משנתי ה -90 - >> [מלאן] אני הייתי שם. >> הוא היה שם. [שחוק] 280 00:16:25,030 --> 00:16:29,210 אתה אולי זוכר את הרקע מהבהב-GIF נוצץ בכל מיני דברים, 281 00:16:29,210 --> 00:16:31,570 GeoCities סוג הסגנון של דברים. 282 00:16:31,570 --> 00:16:34,080 זה ממש לא דוגמה לעיצוב טוב 283 00:16:34,080 --> 00:16:36,690 כי זה באמת מסיח את הדעת מהתוכן. 284 00:16:36,690 --> 00:16:39,590 אתר אמנות ייל הייתה לי GIF המונפש כרקע שלהם 285 00:16:39,590 --> 00:16:41,800 ואתה לא יכול לקרוא שום דבר בדף, 286 00:16:41,800 --> 00:16:44,870 אבל אני מניח שמישהו באמת דבר איתם ועכשיו זה קצת שונה. 287 00:16:44,870 --> 00:16:48,940 [מלאן] זה הרבה יותר טוב עכשיו. >> זה הרבה יותר טוב עכשיו, כפי שאתה יכול לראות. >> [מלאן] אה, כן. 288 00:16:48,940 --> 00:16:56,020 פשוט נהדר, פשוט - כן. אוקיי. 289 00:16:56,020 --> 00:17:00,560 >> חלק מזה הוא גם עושה את הדף שלך אולי מאוד מינימליסטי ומאוד מובן 290 00:17:00,560 --> 00:17:05,690 כך דברים על זרימת הדף באופן שהוא מאוד הגיוני ולא מקבל בדרך זו בזו. 291 00:17:05,690 --> 00:17:11,849 מה מיני דברים אחרים הם טובים או רעים על פייסבוק על פייסבוק? 292 00:17:11,849 --> 00:17:15,730 בואו פשוט לנהל שיחת עיצוב כאן. 293 00:17:19,470 --> 00:17:21,339 אה. איפה? כן. 294 00:17:21,339 --> 00:17:25,640 [תלמיד] מערכת ציר הזמן החדשה מאפשרת לך לחפש את הפרופיל של האדם על עברם. 295 00:17:25,640 --> 00:17:28,119 אווה, ציר זמן. 296 00:17:28,119 --> 00:17:30,280 ציר זמן הוא דבר נהדר, כי זה מאפשר לך גבעול החברים שלך 297 00:17:30,280 --> 00:17:33,300 עוד כשהם היו בתיכון. 298 00:17:35,160 --> 00:17:38,060 ציר הזמן הוא טוב, כי זה מאפשר לך לסנן דרך תוכן הרבה יותר מהר, 299 00:17:38,060 --> 00:17:41,500 זה מאפשר לך למצוא את הדברים שהיו לוקח אחרת אתה באמת הרבה זמן למצוא 300 00:17:41,500 --> 00:17:45,840 רק גלילה מעלה ומטה, מעלה, מעלה, מעלה, מעלה, מעלה, כמו ללכת אחורה בזמן. 301 00:17:45,840 --> 00:17:48,910 אבל אז יש גם סוג של חסרון, כי במונחים של חווית משתמש. 302 00:17:48,910 --> 00:17:51,190 מה זה יכול להיות? 303 00:17:51,190 --> 00:17:56,780 מילה גדולה שמתחילה עם P-R. >> [תלמיד] פרטיות. פרטיות >>, נכון? 304 00:17:56,780 --> 00:17:59,970 פרטיות היא נושא חוויית משתמש ענק. 305 00:17:59,970 --> 00:18:07,190 זה אחד הדברים שאני הכי שונא בפייסבוק עכשיו. [שחוק] 306 00:18:07,190 --> 00:18:09,000 [מלאן] כפי שאני עושה עכשיו. 307 00:18:09,000 --> 00:18:11,380 הדוד לא הבין שזה קרה בעצם עד אתמול. 308 00:18:11,380 --> 00:18:14,560 אז עכשיו הוא יודע שכל פעם שאני מפטפט לו שאני יודע שהוא היה מתעלם ממני. 309 00:18:14,560 --> 00:18:16,880 [מלאן] חלק המביך שאני בעצם מתעלם ממנו, 310 00:18:16,880 --> 00:18:21,040 ואני לא ידעתי שהוא ידע שאני מתעלם ממנו. [שחוק] 311 00:18:21,040 --> 00:18:24,030 פרטיות היא נושא ענק. 312 00:18:24,030 --> 00:18:28,670 מישהו כאן יכול להגיד לי מה יכול להיות רע בפייסבוק פרטיות 313 00:18:28,670 --> 00:18:32,270 חוץ מהעובדה שהם עושים דברים כאלה? 314 00:18:32,270 --> 00:18:37,240 מה זה קשה במיוחד לעשות ביחס לפייסבוק פרטיות? 315 00:18:37,240 --> 00:18:40,340 זה סוג של שאלה הוא מובילה. 316 00:18:41,680 --> 00:18:43,930 כן. >> [תלמיד] סתר את התמונות שלך מאנשים מסוימים. 317 00:18:43,930 --> 00:18:46,170 נכון. בדיוק, כדי להסתיר את התמונות שלך מאנשים מסוימים. 318 00:18:46,170 --> 00:18:51,290 יש להם לחצן זה קטן, קטן בפינה הימנית העליונה המאפשרת לך לעבור את הפרטיות של תמונה. 319 00:18:51,290 --> 00:18:56,360 אפשרויות הפרטיות שלהם מאוד מגוונות בין סוגים שונים של תפריטים. 320 00:18:56,360 --> 00:18:59,510 >> הם קבלו הרבה יותר טובים על זה לאחרונה, אבל זה היה אמור להיות המקרה 321 00:18:59,510 --> 00:19:04,870 כי בכל פעם שאתה רוצה למנוע את החברים שלך מתמונות רואות, 322 00:19:04,870 --> 00:19:08,280 היית צריך לעבור תהליך 5-צעד מסובך מאוד מלהיות כמו, 323 00:19:08,280 --> 00:19:11,150 תנו לי ללחוץ על קישור זה, עכשיו בואו לחצו עליי שוב, תן לי ללחוץ שוב, 324 00:19:11,150 --> 00:19:13,420 תן לי לציין שאנשים לא יכולים לראות את התמונות שלי. 325 00:19:13,420 --> 00:19:17,250 זה לא טוב במיוחד בחלק של פייסבוק 326 00:19:17,250 --> 00:19:20,530 משום שכל כך הרבה על חוויית משתמש היא בעצם נותן להם את החופש 327 00:19:20,530 --> 00:19:22,460 כדי לשלוט במה שאנשים יכולים לראות. 328 00:19:22,460 --> 00:19:25,550 אנחנו קוראים לזה שליטת משתמש וחופש. 329 00:19:25,550 --> 00:19:31,090 אם אתה לא נותן למשתמשים שלך לעשות את זה באופן שהוא יעיל ואינטואיטיבי, 330 00:19:31,090 --> 00:19:34,570 אז חווית המשתמש שלך היא לא באמת כל כך גדולה בכלל. 331 00:19:34,570 --> 00:19:38,200  האם אתם רוצים לומר משהו על פייסבוק? 332 00:19:38,700 --> 00:19:41,420 כיצד אני יכול לבטל את זה? 333 00:19:41,420 --> 00:19:46,290 [אונג] אתה לא יכול לבטל את זה, וזה פגם שימושיות עצומה על חלק מפייסבוק. 334 00:19:46,290 --> 00:19:49,410 תכונה זו - אני באמת בדקתי את זה אתמול - 335 00:19:49,410 --> 00:19:53,940 זה או שאתה לא יכול לעשות את זה או שזה קבור איפשהו מאוד, עמוק מאוד 336 00:19:53,940 --> 00:19:58,050 בנבכי פייסבוק כי אני לא יכול להבין איך לבטל את הפונקציה הזו בכלל. 337 00:19:58,050 --> 00:20:00,400 [מלאן] אבל לפעמים החלטות אלה אינן ברורות 338 00:20:00,400 --> 00:20:03,890 כי אתם נותנים לנו המון פידבקים שימושיים ביישומים שונים CS50 339 00:20:03,890 --> 00:20:05,710 ואתרי אינטרנט שכמובן משתמש בן. 340 00:20:05,710 --> 00:20:10,260 אנחנו לא יישמנו את כל בקשות והצעות אלה. 341 00:20:10,260 --> 00:20:14,550 >> חלק מזה הוא מקבל כל כך הרבה בקשות שזה פונקציה של זמן, 342 00:20:14,550 --> 00:20:17,070 אבל לפעמים אנחנו פשוט לקבל החלטה מודעת כמו, 343 00:20:17,070 --> 00:20:19,830 "תודה על ההצעה, אבל אנחנו לא מסכימים". 344 00:20:19,830 --> 00:20:24,350 אז איך אתה בעצם להחליט מה אתה צריך לעשות אם המשתמשים שלך חושבים שאתה צריך לעשות משהו 345 00:20:24,350 --> 00:20:28,110 גם אם אתה לא בהכרח? 346 00:20:28,110 --> 00:20:32,360 זה איזון עדין בין האזנה בפועל למה שהמשתמשים שלך אומרים 347 00:20:32,360 --> 00:20:35,840 ולמעשה יש איזה קו שבו אתה אומר, 348 00:20:35,840 --> 00:20:37,750 "אנחנו לא הולכים לעשות מה שהמשתמשים האלה אומרים." 349 00:20:37,750 --> 00:20:42,520 ובפרט, אני חושב שהיה ציטוט של הנרי פורד, שמסכם את זה די טוב. 350 00:20:42,520 --> 00:20:47,130 "אם הייתי שואל אנשים מה הם רוצים, הם היו אומרים שהם רוצים סוסים יותר מהירים." 351 00:20:47,130 --> 00:20:51,840 האם מישהו יכול למיין של להקניט מלבד מה שציטוט זה באמת אומר? 352 00:20:51,840 --> 00:20:56,060 זה לא רק שהמשתמשים יודעים מה הם רוצים, 353 00:20:56,060 --> 00:20:59,180 אבל זה יותר כי - 354 00:20:59,180 --> 00:21:02,720 [תלמיד] הם לא יודעים מה זה אפשרי. 355 00:21:02,720 --> 00:21:06,140 בחלק שהם לא יודעים מה שאפשר. 356 00:21:07,880 --> 00:21:11,440 להקניט כי מלבד קצת יותר. מה אתה מתכוון? 357 00:21:11,440 --> 00:21:21,340 [תגובת תלמיד לא נשמעה] 358 00:21:21,340 --> 00:21:25,770 זה טוב. מה שאני חושב שאנחנו מנסים לומר כאן הוא שאנשים יודעים מה הם רוצים. 359 00:21:25,770 --> 00:21:28,050 הם רוצים סוסים יותר מהירים. 360 00:21:28,050 --> 00:21:29,840 מה שהם באמת רוצים הוא היכולת לנוע מהר יותר, 361 00:21:29,840 --> 00:21:32,310 אבל הם לא ממש יודעים את המדיום שבאמצעותו להשיג את זה. 362 00:21:32,310 --> 00:21:36,330 כשאתה מגיע למשתמשים שלך ואת המשתמשים שלך יגידו לך משהו 363 00:21:36,330 --> 00:21:39,700 והם אומרים לך, "אנחנו רוצים תכונות אלו ותכונות אלו והתכונות הללו" 364 00:21:39,700 --> 00:21:42,650 אתה לא רוצה בהכרח לחשוב עליו, "תן לי ללכת קדימה 365 00:21:42,650 --> 00:21:44,720 "וליישם את מה שהם אומרים במפורש," 366 00:21:44,720 --> 00:21:48,610 אבל מה שאתה רוצה לחשוב על זה, "איזה סוג של רעיונות יכול שאני מקבל מזה?" 367 00:21:48,610 --> 00:21:50,450 מה הן בעצם רוצה? 368 00:21:50,450 --> 00:21:55,560 >> ומשם מה שאתה יכול לעשות הוא לעצב משהו שימלא בקשות אלה 369 00:21:55,560 --> 00:22:00,340 אך לא בהכרח באופן שבו המשתמש צופה לו להיות מרוצה. 370 00:22:00,340 --> 00:22:03,830 אז למשהו כמו פרויקט גמר, במונחים מאוד אמיתיים, 371 00:22:03,830 --> 00:22:07,900 מה האוריסטי שימושי כאשר מדובר עושה משהו טוב יותר, 372 00:22:07,900 --> 00:22:10,630 במיוחד אם המעצב יש שחצנות זה עליו 373 00:22:10,630 --> 00:22:14,360 לפיו אתה הרי מכיר את מה שהכי טוב, אתה יכול לקחת קלט מהמשתמשים שלך, 374 00:22:14,360 --> 00:22:16,580 אבל איך אתה באמת ללכת על מקבל משוב ש? 375 00:22:16,580 --> 00:22:21,610 בפרויקט גמר, מאוד קונקרטי, מה שמייצר תוצאות אופטימליות כאן? 376 00:22:21,610 --> 00:22:25,030 מה מייצר תוצאות אופטימליות - ואני אלך על זה בשנייה - 377 00:22:25,030 --> 00:22:29,190 זה תהליך של פיתוח ואז בדיקה ולאחר מכן iterating. 378 00:22:29,190 --> 00:22:32,020 מה שאני מתכוון לבצע את הבדיקה הוא בדרך כלל בעת עיצוב משהו 379 00:22:32,020 --> 00:22:36,970 אתה חושב שזה די טוב, כמו, "אני מעצב כזה גדול. כולם הולכים לאהוב את זה". 380 00:22:36,970 --> 00:22:41,600 ואז אתה מכניס אותו לשם ואנשים לא ממש אוהבים את זה מסיבה כלשהי. 381 00:22:41,600 --> 00:22:46,820 מה שאתה צריך לעשות הוא שאתה צריך לקחת את החלקים של דברים שאנשים עושים כאילו 382 00:22:46,820 --> 00:22:49,180 ולשפץ את הדברים שאנשים לא אוהבים. 383 00:22:49,180 --> 00:22:53,080 זה נשמע כמו תהליך מאוד ברור, אבל התהליך הזה של זמן iterating 384 00:22:53,080 --> 00:22:55,980 על גבי מה שבנית כבר הוא תהליך שמסייע לך 385 00:22:55,980 --> 00:22:59,730 לא רק לחדד את כישורי העיצוב שלך, אלא גם מסייע לך לשפר את העיצוב 386 00:22:59,730 --> 00:23:03,790 כדי שאנשים באמת מעריכים את המוצר שלך אפילו יותר ממה שהם עשו בעבר. 387 00:23:03,790 --> 00:23:07,390 >> אני מתכוון לעבור על דוגמאות קונקרטיות יותר של מה שאתה יכול לעשות בפועל. 388 00:23:07,390 --> 00:23:11,390 כסוג של הדוגמא אחרונה של מוצר, בואו נסתכל על קיאק. 389 00:23:11,390 --> 00:23:14,970 הקיאק כשהוא יצא היה מאוד מאוד פופולרי. 390 00:23:14,970 --> 00:23:18,760 מישהו יכול לנחש למה? 391 00:23:18,760 --> 00:23:20,950 מה הם מיני דברים שאתה אוהב על זה אם אתה משתמש בה 392 00:23:20,950 --> 00:23:23,990 או מה הם מיני דברים שאתה לא אוהב? 393 00:23:23,990 --> 00:23:31,590 כן. >> [תגובת תלמיד לא נשמעה] >> אוקיי. 394 00:23:31,590 --> 00:23:34,730 שזה חלק מעניין הוא לתת למשתמש יש שאילתא שהיא יותר רחב 395 00:23:34,730 --> 00:23:38,150 מאחד מאוד מגביל כמו, "אתה צריך לבחור את תאריך ההתחלה שלך 396 00:23:38,150 --> 00:23:39,810 "ויש לך לבחור את תאריך הסיום." 397 00:23:39,810 --> 00:23:44,910 למעשה, זה מאפשר לך להיות גמיש על זה וזה נותן לך את כל הטיסות בטווח זה. 398 00:23:44,910 --> 00:23:46,730 עוד משהו? 399 00:23:46,730 --> 00:23:50,530 [תלמיד] הם כוללים את הדמים במחיר. 400 00:23:50,530 --> 00:23:53,330 הם עושים יכללו את האגרות במחיר. 401 00:23:53,330 --> 00:23:56,720 המסים והדברים בעצם ללכת ישר שלמחיר בפינה השמאלית העליונה 402 00:23:56,720 --> 00:24:00,710 אז אתה לא רימית לחשוב שאתה בעצם משלם על טיסת 240 $ 403 00:24:00,710 --> 00:24:03,280 כאשר זה באמת 330 דולרים. 404 00:24:03,280 --> 00:24:06,200 עוד משהו? כן. 405 00:24:06,200 --> 00:24:10,140 [תגובת תלמיד לא נשמעה] 406 00:24:10,140 --> 00:24:14,610 אני לא בטוח אם הם באמת ינתנו לך לעשות את זה. 407 00:24:14,610 --> 00:24:18,310 אולי אני טועה. 408 00:24:18,310 --> 00:24:23,360 זה יכול להיות דבר מעניין אם אתה רוצה לשים יותר משקל על מסננים מיוחדים 409 00:24:23,360 --> 00:24:27,000 כך שהם דוחפים את תוצאות הקשורות למסנן לעליון. 410 00:24:27,000 --> 00:24:31,920 אבל מישהו יכול להגיד לי מה כל כך מיוחד בצד שמאל זה? 411 00:24:31,920 --> 00:24:39,540 איך אתה באופן מסורתי לא לחפש טיסה בשירות אינטרנט לפני זה? 412 00:24:41,600 --> 00:24:44,650 >> כן. >> [תגובת תלמיד לא נשמעה] >> אתה יכול להגיד את זה - 413 00:24:44,650 --> 00:24:47,530 [תלמיד] לכל חברת תעופה. >> כן. לכל חברת תעופה יש אתר אינטרנט משלו. 414 00:24:47,530 --> 00:24:50,110 זה מאחד את הדברים. ו? 415 00:24:50,110 --> 00:24:52,190 [תלמיד] אתה יודע בדיוק באיזו שעה אתה עוזב. 416 00:24:52,190 --> 00:24:54,460 אתה יודע בדיוק באיזו שעה אתה עוזב, 417 00:24:54,460 --> 00:24:59,380 אבל קשור למסננים בפרט. 418 00:25:00,710 --> 00:25:03,540 תן לי להכין את הקיאק. 419 00:25:11,490 --> 00:25:14,020 הו אלוהים, חלונות קופצים. חוויית משתמש גרועה. 420 00:25:14,020 --> 00:25:17,230 מה קורה כשאני מזיז את המחוון הזה? 421 00:25:17,230 --> 00:25:21,010 [סטודנטים] עדכונים אוטומטיים. >> [אונג] עדכונים אוטומטיים. 422 00:25:21,010 --> 00:25:23,440 זה משהו שמאוד חשוב. 423 00:25:23,440 --> 00:25:25,380 לפני זה, בכל פעם שאתה רוצה לחפש את טיסה, 424 00:25:25,380 --> 00:25:28,410 הייתה לך לשים במיקום שלך הקלט, פלט המיקום שלך, חפשו עיתונות, 425 00:25:28,410 --> 00:25:31,190 זה היה תהליך ושלהראות התוצאות. 426 00:25:31,190 --> 00:25:34,120 אם אתה רוצה לשנות את השאילתה שלך, היית צריך ללחוץ שוב פעמים, 427 00:25:34,120 --> 00:25:39,770 להיכנס בשאילתא חדשה מאפס, ואז לעשות את זה שוב ושוב. 428 00:25:39,770 --> 00:25:43,910 הדבר נחמד על משהו כמו זה שהיא משתמשת דבר [לא מובן] מאוד באמצע. 429 00:25:43,910 --> 00:25:46,230 כל פעם שאתה עושה משהו כזה, הוא יורה מבקשה 430 00:25:46,230 --> 00:25:48,420 והוא מחזיר לך את כל התוצאות באופן מיידי. 431 00:25:48,420 --> 00:25:51,680 זה סוג של משוב מיידי הוא משהו שגרם קיאק פופולרי בפראות 432 00:25:51,680 --> 00:25:55,910 כי זה נורא קל לי פשוט לשנות השאילתה שלי 433 00:25:55,910 --> 00:25:58,890 וכדי להבין את הדברים שסביב טווח מסוים 434 00:25:58,890 --> 00:26:01,950 מבלי ללכת הלוך ושוב, הלוך ושוב, הלוך ושוב. 435 00:26:01,950 --> 00:26:05,200 אז אלו הם כל מיני דברים שאתה רוצה לחשוב עליו כאשר אתה מעצב את האתר שלך. 436 00:26:05,200 --> 00:26:08,930 איך אני יכול לעשות את זה מאוד יעיל עבור המשתמשים שלי יעבור את מה שהם עובדים על 437 00:26:08,930 --> 00:26:13,010 וכדי להגיע למטרה הסופית שלהם מהר ככל האפשר? 438 00:26:13,010 --> 00:26:16,430 [מלאן] ועד לנקודה של יוסף קודם על משתמשים לא בהכרח יודעים מה הם רוצים, 439 00:26:16,430 --> 00:26:18,640 על הסמך מה אתם יודעים עכשיו על HTML 440 00:26:18,640 --> 00:26:22,780 ויש לך תיבות סימון, כפתורי רדיו, תפריטים נבחרים, שדות קלט וכדומה, 441 00:26:22,780 --> 00:26:26,140 איך היית ליישם את הרעיון של בחירת שעת התחלה לטיסה? 442 00:26:26,140 --> 00:26:30,030 >> איזה ממנגנוני UI השונים האלה היית משתמש? 443 00:26:30,030 --> 00:26:34,100 אם אתה פשוט יודע את כמות HTML שלמדה לפני 444 00:26:34,100 --> 00:26:39,070 ואתה יודע את התשומות הן כפתורי רדיו, תיבות סימון, תפריטים נפתחים, ותיבת קלט, 445 00:26:39,070 --> 00:26:43,320 מה היית הבחירה הטבעית שלך הייתה לבחירת תאריכים? 446 00:26:43,320 --> 00:26:48,670 [תלמיד] קלט. קלט. >> או אולי אפילו נפתח עם כל התאריכים, נכון? 447 00:26:48,670 --> 00:26:53,170 אז עם מנגנונים מורכבים יותר ממשק משתמש כמו זה בצד השמאל שתוכל ליישם, 448 00:26:53,170 --> 00:26:55,500 אתה יכול לעשות את התהליך הזה הרבה יותר אינטואיטיבי עם מחוון 449 00:26:55,500 --> 00:27:01,020 כי הזמן הוא רציף, ואנשים בדרך כלל לא חושבים על זה במונחים של נתחים בדידים. 450 00:27:01,020 --> 00:27:04,950 בסדר. הדבר אחרון. 451 00:27:04,950 --> 00:27:07,370 עשר היוריסטיקות שימושיות. 452 00:27:07,370 --> 00:27:10,820 כל הדברים שדברנו על כנראה נופלים תחת אחת מהקטגוריות הללו. 453 00:27:10,820 --> 00:27:14,420 אם אתה הולך לקישור זה, אשר פורסם באתרי האינטרנט, 454 00:27:14,420 --> 00:27:18,900 אתה בעצם תוכל, כפי שאתה מעצב את האתר שלך, לשמור על היוריסטיקות אלו בחשבון 455 00:27:18,900 --> 00:27:21,330 וכללים אלה של אגודל. 456 00:27:21,330 --> 00:27:26,610 לפרויקטים שלך, מה שאני מציע לך לעשות כדי לתכנן היישום שלך טוב יותר 457 00:27:26,610 --> 00:27:28,850 הוא לעשות אב טיפוס ראשון בעיתון. 458 00:27:28,850 --> 00:27:32,150 כאשר אתה חושב על היישום שלך, לשרטט מהר מאוד את מה שאתה רוצה שזה ייראה כמו 459 00:27:32,150 --> 00:27:36,230 ולוודא שכל התיבות מסודרות באופן שהוא מאוד אינטואיטיבי למשתמש להשתמש 460 00:27:36,230 --> 00:27:39,820 ואפילו להראות אב טיפוס הנייר האלה לחברים שלך ולהתחיל בקבוצות מיקוד. 461 00:27:39,820 --> 00:27:44,230 פשוט לקבל 2 או 3 אנשים יחד ולבקש מהם רק כדי להקיש על אב טיפוס הנייר הללו, 462 00:27:44,230 --> 00:27:47,650 ולהראות להם מסכים חדש כדי לראות אם הם באמת מבינים מה קורה. 463 00:27:47,650 --> 00:27:50,680 >> מה אתה רוצה לעשות הוא לתת להם משימה, משימה שתניע, 464 00:27:50,680 --> 00:27:53,270 ופשוט לתת להם את היישום ולתת להם להשתמש בו. 465 00:27:53,270 --> 00:27:56,530 אל תתנה להם הוראות מעבר לכך. 466 00:27:56,530 --> 00:28:00,920 אתה רוצה למעשה לתת להם אינטראקציה עם היישום שלך באופן שמאפשר לך לראות 467 00:28:00,920 --> 00:28:03,870 איך הם היו משתמשים בו אם לא היית עומדים לידם. 468 00:28:03,870 --> 00:28:05,250 וזה חשוב מאוד. 469 00:28:05,250 --> 00:28:08,780 זה ייתן לך הרבה תובנה באשר לאנשים לעקוף דברים מסוימים 470 00:28:08,780 --> 00:28:10,560 באופן שלא התכוון להם? 471 00:28:10,560 --> 00:28:14,680 האם הם משתמשים במנגנוני ממשק משתמש מסוימים על המסך 472 00:28:14,680 --> 00:28:17,490 באופן שהוא סוג של חאקי? 473 00:28:17,490 --> 00:28:22,020 אני לא מעוניין שהם עושים את זה ככה. 474 00:28:22,020 --> 00:28:23,940 וברגע שתסיים עם זה, מה אתה רוצה לעשות? 475 00:28:23,940 --> 00:28:26,010 סלעי העיצוב שלך, נכון? 476 00:28:26,010 --> 00:28:29,600 מה שאתה רוצה לעשות הוא שאתה רוצה לפתח ואז לעשות תהליך ששוב ושוב. 477 00:28:29,600 --> 00:28:32,110 אז להראות את זה לחברים לאחר שפתחת אותו, לבדוק אותו, 478 00:28:32,110 --> 00:28:36,630 לפתח, לבחון, לפתח, לבחון, לחזר, וכן הלאה וקדימה. 479 00:28:36,630 --> 00:28:39,720 עיצוב הוא מאוד תהליך חוזר ונשנה במובן זה. 480 00:28:39,720 --> 00:28:43,280 למעשה אתה צריך לבנות משהו ואז מבינים דברים על זה 481 00:28:43,280 --> 00:28:46,520 כי אתה לא הבנת לפני ולחזור ולשפר מזה. 482 00:28:46,520 --> 00:28:50,890 עכשיו, כמו לחלק הפיתוח, זה מה השטומים הולכים להראות לך אחרי ההפסקה 483 00:28:50,890 --> 00:28:53,220 ואיך ייתכן שתוכל ליישם משהו כמו השלמה אוטומטית 484 00:28:53,220 --> 00:28:56,610 באופן שהוא פשוט למדי. 485 00:28:57,440 --> 00:28:59,550 [מלאן] כמו טומי מקים כאן, אם כך, שאלה. 486 00:28:59,550 --> 00:29:03,780 הרבה האתרים הקדומים ביותר - וכאשר יוסף אמרו אתר בסגנון 1990, 487 00:29:03,780 --> 00:29:07,640 זה היה מימושים שבו אם אתה רוצה לבחור שעת התחלה ושעת סיום, 488 00:29:07,640 --> 00:29:10,380 בכנות, בחזרה באותו היום ואפילו בכמה אתרי אינטרנט היום, 489 00:29:10,380 --> 00:29:13,220 הדרך בה אתה עושה את זה היא שאתה בוחר משעה נפתחת, 490 00:29:13,220 --> 00:29:15,910 אתה בוחר דקות מנפתח, אולי תבחר בבוקר, בערב, 491 00:29:15,910 --> 00:29:17,440 ואז אתה עושה את זה 3 פעמים נוספות. 492 00:29:17,440 --> 00:29:19,920 וכך עם 6 קליקים ואולי קצת גלילה 493 00:29:19,920 --> 00:29:24,000 המשתמש שלך באמת יכול לספק איזה תאריך ו / או בטווח זמן במובן הזה. 494 00:29:24,000 --> 00:29:27,920 >> אז בהחלט לא אופטימלי ובכל זאת עד כה לא ראתה שום יכולות הבעה 495 00:29:27,920 --> 00:29:30,330 בכל אחת מהשפות שהסתכלנו על לעשות משהו יותר סקסי 496 00:29:30,330 --> 00:29:32,620 כמו מחוון זה זמן התחלה וזמן סיום. 497 00:29:32,620 --> 00:29:36,290 אבל אם אתה חושב לחזור לשבוע 0 בעת שדברנו עליו שריטה, 498 00:29:36,290 --> 00:29:39,080 גם שם לא היו יישומונים שפשוט עשו דברים מסוימים. 499 00:29:39,080 --> 00:29:42,700 אתה באמת פשוט היית לי היסודות האלה כמו לולאות ותנאים וכדומה. 500 00:29:42,700 --> 00:29:46,910 אז סוג של רק ממחשבה מופשטת מאוד עכשיו, בלתי תלויה בפרטים של HTML, 501 00:29:46,910 --> 00:29:51,260 מה באמת קורה עם משהו כמו שעה זו ההתחלה ושעת סיום מחוון? 502 00:29:51,260 --> 00:29:54,960 כשאני מזיז את העכבר שלי ואני לוחץ על סמל שהגזר קטן מהשמאל 503 00:29:54,960 --> 00:29:59,220 והתחל לגרור, תכנות, מה זה שאתה רוצה להיות מסוגל ליישם 504 00:29:59,220 --> 00:30:01,000 כדי שזה יקרה? 505 00:30:01,000 --> 00:30:04,920 מה שאלות, מה ביטויים בוליאניים אתה רוצה להיות מסוגל לשאול? 506 00:30:04,920 --> 00:30:06,930 מה באמת קורה? סמי? 507 00:30:06,930 --> 00:30:10,080 [תלמיד] איפה מיקום הסמן? >> טוב. איפה מיקום הסמן? 508 00:30:10,080 --> 00:30:11,970 זה היה משהו שהיינו צריך כדי להביע שוב בלגרד, 509 00:30:11,970 --> 00:30:14,690 אם זה היה מבוסס על מיקום או אפילו צבע או כמו. 510 00:30:14,690 --> 00:30:18,410 אתם אולי זוכרים ולו בחטף ביום שני יש את כל הדברים האלה היו נקראים אירועים 511 00:30:18,410 --> 00:30:22,370 בעולם של האינטרנט, ולכן יש דברים כמו onclick וonkeypress 512 00:30:22,370 --> 00:30:25,960 וonkeyup וonMouseOver וonmouseout. 513 00:30:25,960 --> 00:30:29,130 אז להבין שגם הדברים האלה שאנחנו כבר לוקחים כמובן מאליו באינטרנט 514 00:30:29,130 --> 00:30:32,190 עם אתרים כמו פייסבוק וג'ימייל, גם אם אין לך מושג 515 00:30:32,190 --> 00:30:34,890 איך תוכל ליישם את זה כי אין שום דבר שאפילו דומה לזה בהרצאה 516 00:30:34,890 --> 00:30:38,570 או בעית הגדרה 7, מבין שעם את מדויקי יסודות אלה, 517 00:30:38,570 --> 00:30:41,090 עם HTTP ופרמטרים וGET ולפרסם, 518 00:30:41,090 --> 00:30:44,010 עם תשומות HTML בסיסיות שבדקנו עד כה 519 00:30:44,010 --> 00:30:47,690 וברגע עם המנגנונים תכנוניים שתומים של כ להציג 520 00:30:47,690 --> 00:30:51,300 אתה יכול להתחיל לבטא את עצמך בדיוק כמו שעשית בשבוע 0 521 00:30:51,300 --> 00:30:53,800 באופן אינטואיטיבי מאוד גרירה ושחרור. 522 00:30:53,800 --> 00:30:58,950 >> אז עם זה אמר, טומי MacWilliam וכמה חלקי פאזל חדשים עבורנו לאינטרנט. 523 00:30:58,950 --> 00:31:03,450 בסדר. השמי הוא טומי ואני הולך לדבר על JavaScript. 524 00:31:03,450 --> 00:31:07,150 רק ויתור: אני בדעה שJavaScript היא שפת תכנות הטובה ביותר 525 00:31:07,150 --> 00:31:09,010 בכל העולם כולו. 526 00:31:09,010 --> 00:31:11,940 יש הרבה אנשים שלא מסכימים איתי, אבל זה פשוט מדהים. 527 00:31:11,940 --> 00:31:16,330 ברגע שאתה חוזר לג', אם יש לך לכתוב C לכיתה אחרת או כמה שפות אחרות, 528 00:31:16,330 --> 00:31:19,780 זה ממש מתסכל בכל הפרטים ברמה נמוכה שיש לך להסתבך פנימה 529 00:31:19,780 --> 00:31:23,050 אז אם אי פעם אתה מרגיש עצוב על כמה מעצבן C היא לכתוב, 530 00:31:23,050 --> 00:31:25,130 פשוט לחזור, לכתוב קצת ב-JavaScript. זה נירוונה. 531 00:31:25,130 --> 00:31:27,980 אתה תרגיש הרבה יותר טוב על היום הרע שלך. 532 00:31:27,980 --> 00:31:31,900 הרבה מהקסם של JavaScript מגיע מיכולתה לתמרן את הדברים 533 00:31:31,900 --> 00:31:33,730 שכבר נמצאים בדף. 534 00:31:33,730 --> 00:31:38,520 כשכתבנו הסקריפטים PHP שלנו, הם הוצאו להורג בשרת, 535 00:31:38,520 --> 00:31:42,270 וסופו של הדבר שPHP סקריפט כנראה פלט קצת HTML. 536 00:31:42,270 --> 00:31:45,860 שHTML נשלח ללקוח, ולאחר מכן זה היה זה. 537 00:31:45,860 --> 00:31:50,180 אם PHP רצה להוסיף לחצן לדף, לדוגמה, הוא לא באמת יכול לעשות את זה. 538 00:31:50,180 --> 00:31:54,350 זה היה צריך להפוך קובץ HTML חדש לגמרי ולשלוח את זה לדפדפן. 539 00:31:54,350 --> 00:31:57,840 עם JavaScript אנחנו יודעים שאנחנו יכולים לעדכן את הדברים בזמן שהם כבר נמצאים בדף, 540 00:31:57,840 --> 00:32:00,840 ובגלל זה אנחנו יכולים לספק משוב מיידי הרבה יותר, 541 00:32:00,840 --> 00:32:06,150 שבאמת ישפר את חווית המשתמש באתר שלנו. 542 00:32:06,150 --> 00:32:09,330 רק סיכום מהיר של בוררי JavaScript. 543 00:32:09,330 --> 00:32:11,590 אנו יודעים שכאשר אנו מורידים דף HTML, 544 00:32:11,590 --> 00:32:13,890 זה הולך להיות מיוצג בDOM. 545 00:32:13,890 --> 00:32:19,340 >> DOM זוכר הוא רק העץ הגדול הזה שבו אלמנטים הקשורים בהיררכיה הגדולה הזה. 546 00:32:19,340 --> 00:32:21,810 כשעבדנו עם מסדי נתונים ב7 pset, 547 00:32:21,810 --> 00:32:26,280 אחד מהדברים הראשונים שאנחנו צריכים לדעת איך לעשות היה שאילתא מסד הנתונים. 548 00:32:26,280 --> 00:32:29,060 יש לנו שולחן משתמשים גדול זה, ולפעמים אנחנו פשוט רוצים להגיד, 549 00:32:29,060 --> 00:32:33,260 "אני רוצה שרק חלק מהמשתמשים אלה התואמים את מצב קצת." 550 00:32:33,260 --> 00:32:36,020 בדומה לכך, כאשר יש לנו DOM אנו זקוקים לדרך תשאולו. 551 00:32:36,020 --> 00:32:39,490 אנו זקוקים לדרך של אמירה: "אני רוצה את כל הלחצנים שנראים כמו זה 552 00:32:39,490 --> 00:32:41,860 "או את כל התמונות בדף." 553 00:32:41,860 --> 00:32:44,330 ובוררים אלה מאפשרים לנו לעשות את זה. 554 00:32:44,330 --> 00:32:45,690 אז רק לסכם מהירים. 555 00:32:45,690 --> 00:32:50,770 הראשון זה כאן, זה # להגיש, מה שהולך לבחור? מישהו זוכר? 556 00:32:50,770 --> 00:32:54,880 [תגובת תלמיד לא נשמעה] >> כן, בדיוק. 557 00:32:54,880 --> 00:32:59,510 זה הולך לבחור אלמנט בדף שיש לו תעודת זהות של שליחה. 558 00:32:59,510 --> 00:33:03,470 וכדי שתג החשיש אומר בורר זה הולך לעבוד עם תעודות זהות. 559 00:33:03,470 --> 00:33:07,630 מה דעתך על אחד השני, זה. מרכז, מה שיבחר? 560 00:33:11,360 --> 00:33:15,180 כן. >> [תלמיד] ייצוגי. >> בדיוק. עכשיו זה הולך לבחור בכיתה. 561 00:33:15,180 --> 00:33:18,840 ההבדל בין זהות ומעמד כאן הוא בדרך כלל זיהוי צריך להיות ייחודי 562 00:33:18,840 --> 00:33:20,820 בתוך כל מרחב שאתה מחפש מעל. 563 00:33:20,820 --> 00:33:23,080 לכן, אם היו מחפש את דף אינטרנט כולו, 564 00:33:23,080 --> 00:33:27,740 אתה באמת צריך רק אלמנט 1 עם שזהות מסוימת, ולכן במקרה זה של שליחה. 565 00:33:27,740 --> 00:33:31,330 עם שיעורים, מצד השני, יכול להיות לנו אלמנט יותר מ 1 באותו העמוד 566 00:33:31,330 --> 00:33:33,130 באותה הכיתה. 567 00:33:33,130 --> 00:33:36,580 זה יכול להיות שימושי עבור להגיד שאני רוצה לבחור את כל מה שמרוכז בדף 568 00:33:36,580 --> 00:33:38,450 ולא רק דבר 1. 569 00:33:38,450 --> 00:33:40,310 >> ולבסוף, זה אחרון כאן הוא קצת יותר מסובך, 570 00:33:40,310 --> 00:33:43,890 אבל מה זה הולך לבחור מתוך DOM? 571 00:33:46,650 --> 00:33:48,810 [תגובת תלמיד לא נשמע] >> מה זה? 572 00:33:48,810 --> 00:33:53,250 [תלמיד] כל דבר שהוא תג. >> יש לנו 2 חלקים כאן. 573 00:33:53,250 --> 00:33:58,070 החלק השני הולך להגיד שאני רוצה לבחור תגים אלה עם תג של קלט, 574 00:33:58,070 --> 00:34:00,730 כך שכל אלמנט הוא תג קלט. 575 00:34:00,730 --> 00:34:03,080 אבל אני לא רוצה רק כדי לבחור את כל התשומות 576 00:34:03,080 --> 00:34:05,170 כי משהו כמו כפתור submit יכול להיות קלט 577 00:34:05,170 --> 00:34:08,409 ומשהו כמו תיבת טקסט יכול להיות קלט. 578 00:34:08,409 --> 00:34:11,909 אז עם הסוגריים המרובעים האלה, אני אומר שאני רוצה רק כדי לבחור האלמנטים האלה 579 00:34:11,909 --> 00:34:14,110 שהם סוג של טקסט. 580 00:34:14,110 --> 00:34:17,400 אי שם בתג HTML שלי יש לי תכונה הנקראת סוג, 581 00:34:17,400 --> 00:34:19,750 ואת הערך של תכונה שצריך להיות טקסט. 582 00:34:19,750 --> 00:34:21,340 אז מה דעתך על חלק הראשון זה כאן? 583 00:34:21,340 --> 00:34:25,489 המילה הראשונה של בורר זה היא צורה אז יש לי מקום ולאחר מכן חלק קלט זה. 584 00:34:25,489 --> 00:34:29,620 מה זה עושה, לשים את הטופס לפניו? 585 00:34:33,409 --> 00:34:35,860 זה הולך בעצם להגביל השאילתה שלנו. 586 00:34:35,860 --> 00:34:38,510 זה יכול להיות במקרה זה יש לנו כמה כניסות בדף 587 00:34:38,510 --> 00:34:41,080 שאינם צאצאים של טופס. 588 00:34:41,080 --> 00:34:46,150 מה שזה יעשה הוא זה אומר שאני רוצה רק את תגי הקלט שיש להם אי שם מעליהם 589 00:34:46,150 --> 00:34:49,030 איזה אלמנט הורה של טופס. 590 00:34:49,030 --> 00:34:52,100 וכך, בדרך זו אנו יכולים לבצע שאילתות היררכיות יותר אלה 591 00:34:52,100 --> 00:34:55,000 כך שאנחנו לא רק צריכים לבחור מה מתאימי בורר נתון. 592 00:34:55,000 --> 00:35:00,760 אנחנו יכולים סוג של מגבלת ההיקף שהשאילתה למשהו אחר. 593 00:35:00,760 --> 00:35:04,000 אז עכשיו אנחנו יודעים איך לבחור אלמנטים בדף, 594 00:35:04,000 --> 00:35:06,780 בואו נדבר קצת על AJAX. 595 00:35:06,780 --> 00:35:12,270 AJAX הוא ראשי תיבות עדיין אופנתיות מאוד שעומדות לJavaScript אסינכרוני ו-XML. 596 00:35:12,270 --> 00:35:15,640 זה פשוט כל כך קורה כי XML היא פשוט דרך כלשהי כדי לייצג נתונים. 597 00:35:15,640 --> 00:35:20,920 >> סוג זה של איבוד פופולריות לאחרונה, אז ה-X בAJAX אינו משמש כל הזמן. 598 00:35:20,920 --> 00:35:26,220 בעיקרון, מה AJAX מאפשר לנו לעשות הוא להפוך בקשות HTTP 599 00:35:26,220 --> 00:35:28,620 מההקשר של JavaScript. 600 00:35:28,620 --> 00:35:32,310 כאשר אנחנו בדפדפן האינטרנט שלנו ואנחנו לנווט ברחבי דפים ואנחנו לוחצים על קישור, 601 00:35:32,310 --> 00:35:37,790 מה הדפדפן שלנו הולך לעשות הוא לבצע בקשת HTTP לכולנו את קשר שלחצו. 602 00:35:37,790 --> 00:35:41,670 אבל זה לא תמיד אידיאלי, כי אם זה מצב, אז כמו שאמר דוד, 603 00:35:41,670 --> 00:35:45,220 תמיד יש לנו להפוך את המשתמשים ללחוץ על כפתור שליחה או ללחוץ על קישור 604 00:35:45,220 --> 00:35:50,380 כדי לגרום לכל דבר לקרות, כי הדבר דורש בקשת HTTP. 605 00:35:50,380 --> 00:35:54,160 אז עם AJAX אנחנו יכולים לעשות את הבקשות בשמו של JavaScript. 606 00:35:54,160 --> 00:35:57,020 כלומר, בכל פעם שהמשתמש מקיימים אינטראקציה עם הדף או כל דבר שקורה, 607 00:35:57,020 --> 00:36:01,780 אנחנו באמת יכולים לעשות בקשה תוכניתית לחלק קובץ PHP אחר באתר שלנו 608 00:36:01,780 --> 00:36:06,280 או כל דבר אחר ולאחזר את הנתונים שקובץ שיורק החוצה. 609 00:36:06,280 --> 00:36:09,860 בואו נסתכל על דוגמה של AJAX. 610 00:36:09,860 --> 00:36:16,140 זה הדף שלנו עם אוצר CS50 אשר בתקווה חלק מאיתנו מכיר. 611 00:36:16,140 --> 00:36:21,790 אם נסתכל על ה-HTML של דף זה, אנו רואים כאן שאני הוספתי כמה דברים, 612 00:36:21,790 --> 00:36:23,820 אחד מהם נתתי לי טופס זה מזהה. 613 00:36:23,820 --> 00:36:26,480 אני כבר אמרתי id = "טופס הצעת מחיר". 614 00:36:26,480 --> 00:36:31,910 עשיתי את זה רק בגלל שזה הולך להפוך את זה קצת יותר קל לבחור מתוך DOM 615 00:36:31,910 --> 00:36:35,090 מאז אני פשוט לא יכול לעשות שאילתא פשוטה מאוד. 616 00:36:35,090 --> 00:36:38,960 מה שאני רוצה לעשות כאן הוא שאני רוצה לתקן קצת בעיה עם CS50 אוצר. 617 00:36:38,960 --> 00:36:41,550 אז אם אנחנו הולכים לfinance.cs50.net, 618 00:36:41,550 --> 00:36:45,700 בכל פעם שאני רוצה לקבל הצעת מחיר, אני צריך ללחוץ על כפתור ציטוט לקבל את זה, 619 00:36:45,700 --> 00:36:48,960 ושקבל ציטוט הכפתור אז לוקח אותי לכל דף נוסף. 620 00:36:48,960 --> 00:36:52,400 ואם אני רוצה ציטוט נוסף, יש לי ללחוץ על הכפתור חזרה ואז אני מקליד את זה, 621 00:36:52,400 --> 00:36:54,480 אני מקבל את הצעת מחיר, ואני לוחץ על כפתור חזור. 622 00:36:54,480 --> 00:36:56,840 זה באמת לא את חוויית המשתמש הטובה ביותר. 623 00:36:56,840 --> 00:37:01,570 מי באמת הייתי משתמש באתר אם זה כל כך איטי על מנת לקבל מחירי המניות? 624 00:37:01,570 --> 00:37:05,630 אז מה אנחנו רוצים לעשות עם AJAX הוא להסיר צעד זה של הולך לדף נפרד 625 00:37:05,630 --> 00:37:08,410 כדי להציג את התוצאות. 626 00:37:08,410 --> 00:37:11,240 >> מה אנחנו באמת רק אתה מבקשים הוא שמחיר ממש קטן, 627 00:37:11,240 --> 00:37:14,240 וזה רק כמות קטנה מאוד של נתונים. 628 00:37:14,240 --> 00:37:17,400 כך שאין לי צורך ללכת עוד דף HTML שלם, 629 00:37:17,400 --> 00:37:20,670 להוריד תצווה חדש של HTML, אולי להוריד עוד כמה תמונות, 630 00:37:20,670 --> 00:37:24,410 כמה קבצי CSS אחרים פשוט לי לענות על השאלה פשוטה מאוד 631 00:37:24,410 --> 00:37:27,810 של כמה עושה מניות עלות זו. 632 00:37:27,810 --> 00:37:31,000 עם AJAX אנחנו יכולים לעשות את זה הרבה יותר קל. 633 00:37:31,000 --> 00:37:36,400 אנו רואים כאן שאני מקשר בקובץ JavaScript נקרא quote.js. 634 00:37:36,400 --> 00:37:40,140 בואו בעצם לפתוח את הקובץ. לא שם. 635 00:37:42,610 --> 00:37:45,860 כל קבצי JavaScript שלי הולכים להיות ממוקמים ב-HTML 636 00:37:45,860 --> 00:37:47,630 כך שדפדפן האינטרנט יכול לגשת אליו. 637 00:37:47,630 --> 00:37:50,330 אז יש לנו כאן ספרייה נפרדת לJavaScript, 638 00:37:50,330 --> 00:37:54,340 ועכשיו הוא כאן quote.js. 639 00:37:54,340 --> 00:38:00,930 בחלק העליון של קובץ זה זה אומר כאן שאני רוצה לחכות לכל הדף להיות טעון 640 00:38:00,930 --> 00:38:04,830 לפני שאני מנסה לעשות כל דבר. למה זה נחוץ? 641 00:38:04,830 --> 00:38:08,650 מתברר שהדבר הבא שאני הולך לעשות כאן הוא להתחיל לחפש אלמנט 642 00:38:08,650 --> 00:38:10,810 התואם את חלק בורר. 643 00:38:10,810 --> 00:38:15,600 אם זה אי פעם JavaScript להורג לפני האלמנט הזה נטען בדף, 644 00:38:15,600 --> 00:38:17,820 אז כל מה שאני מנסה לעשות הוא לא הולך לעבודה 645 00:38:17,820 --> 00:38:20,580 בגלל שאני הולך לנסות לבחור משהו שהוא עדיין לא שם. 646 00:38:20,580 --> 00:38:23,780 אז בשורה העליונה זה אומרת שאני רוצה שתחכה עד שהכל נטען 647 00:38:23,780 --> 00:38:28,030 כך אנחנו מובטחים שכל אלמנטים שאני מחפש הם למעשה בדף. 648 00:38:29,730 --> 00:38:34,310 סימן דולר זה כאן פירושו אני משתמש בספרייה שנקראת jQuery. 649 00:38:34,310 --> 00:38:38,570 ספריית jQuery זה מאפשר לנו להשתמש בבוררים אלה שרק הסתכלו. 650 00:38:38,570 --> 00:38:44,010 באומר $ לאחר מכן עובר כבטיעון # טופס הציטוט הזה, 651 00:38:44,010 --> 00:38:47,910 אני עכשיו בחירת צורה שאנחנו פשוט לקחנו להסתכל. 652 00:38:47,910 --> 00:38:52,290 עכשיו יש לי ייצוג של אותה הדמות בזיכרון איכשהו. 653 00:38:52,290 --> 00:38:56,760 >> באובייקט זה עכשיו, זה ייצוג של הטופס, 654 00:38:56,760 --> 00:38:58,890 עכשיו אני משתמש בפונקציה שנקראת ב. 655 00:38:58,890 --> 00:39:02,710 מה הפונקציה הזו עושה הוא שזה הולך לצרף מטפל באירועים. 656 00:39:02,710 --> 00:39:06,310 האירוע שאנחנו הולכים להקשיב להוא אירוע השליחה. 657 00:39:06,310 --> 00:39:08,890 לכן, כאשר המשתמש לוחץ על כפתור שליחה או שלוחץ על Enter, 658 00:39:08,890 --> 00:39:11,730 האירוע הזה הולך לירות. 659 00:39:11,730 --> 00:39:16,390 על ידי משדל לזה, עכשיו אני יכול לדרוס את התנהגות ברירת המחדל של הטופס. 660 00:39:16,390 --> 00:39:19,770 ללא הפעלה זו, צורתו לא תיכנע לכל קובץ PHP 661 00:39:19,770 --> 00:39:22,110 השתמשנו בתכונה זו פעולה. 662 00:39:22,110 --> 00:39:25,440 אבל במקום זה, אני אומר עכשיו, חכה, חכה, חכה, אני לא רוצה שתעשה את זה בפועל. 663 00:39:25,440 --> 00:39:31,140 אני רוצה שזה יקרה לפני שאתה הולך ומנסה לשלוח אותה לכמה קבצי PHP. 664 00:39:31,140 --> 00:39:32,870 עכשיו מה שאני רוצה לעשות? 665 00:39:32,870 --> 00:39:39,270 בנקודה זו אני רוצה להשתמש ב-AJAX איכשהו לטעון במה המחיר של המנייה הוא. 666 00:39:39,270 --> 00:39:44,170 הדבר הראשון שצריך לדעת הוא מה מניית המשתמש נראה באופק. 667 00:39:44,170 --> 00:39:46,760 כדי לעשות את זה אני הולך להשתמש בבורר אחר. 668 00:39:46,760 --> 00:39:49,020 זה הבורר השלישי שהסתכלנו קודם. 669 00:39:49,020 --> 00:39:54,460 זה אומר שאני רוצה להתחיל את צורת האלמנט הזה בזהות של טופס הצעת מחיר. 670 00:39:54,460 --> 00:39:58,440 אז איפשהו בתוכו של הטופס חייב להיות אלמנט קלט 671 00:39:58,440 --> 00:40:01,270 שיש לו שמו של סמל. 672 00:40:01,270 --> 00:40:05,460 אם אנחנו מסתכלים אחורה בHTML שלנו, ראיתי שיש לנו קלט [שם = סמל]. 673 00:40:05,460 --> 00:40:12,380 זה אומר שזה הולך לבחור שתיבת הטקסט שהמשתמש מקליד. 674 00:40:12,380 --> 00:40:13,870 זה נחמד. יש לנו את תיבת הטקסט. 675 00:40:13,870 --> 00:40:17,360 עכשיו אנחנו רק צריכים לדעת מה יש בתוכו. 676 00:40:17,360 --> 00:40:20,290 כדי לעשות זאת אנחנו יכולים לקרוא לשיטה זו כאן,. Val זה, 677 00:40:20,290 --> 00:40:23,240 וזה אומר שאני יודע מה יש לך תיבת טקסט. 678 00:40:23,240 --> 00:40:28,160 אני רוצה שתגיד לי מה זה שלמשתמש קליד תיבת הטקסט. 679 00:40:28,160 --> 00:40:34,440 עכשיו יש לנו מחרוזת בשם סמל ששווה לכל מה שהקליד פנימה המשתמש 680 00:40:34,440 --> 00:40:39,820 זה נחמד. אנו יכולים להשתמש במחרוזת שעכשיו לעשות את הבקשה שלנו. 681 00:40:39,820 --> 00:40:42,450 זוהי פונקציה חדשה כאן, זה $, 682 00:40:42,450 --> 00:40:44,900 מלבד אנחנו כבר לא הולכים להיות בחירת אלמנטים, 683 00:40:44,900 --> 00:40:48,910 אנחנו הולכים להתקשר אל פונקציה אחרת המסופקת לנו על ידי jQuery. 684 00:40:48,910 --> 00:40:54,810 פונקצית AJAX זה מה בעצם הולך לעשות את בקשת HTTP זה. 685 00:40:54,810 --> 00:40:57,000 אז יש לנו להגיד לו כמה דברים. 686 00:40:57,000 --> 00:41:01,410 הדבר הראשון שאנחנו צריכים להגיד פונקציה זו הוא שבו אני רוצה ללכת לבקשה. 687 00:41:01,410 --> 00:41:08,910 אי שם בפרויקט שלי יש לי את הקובץ הזה בתוך ספריית HTML נקראת quote.php. 688 00:41:08,910 --> 00:41:15,150 אני יכול לגשת לקובץ זה, ראה, ממש כמו היום, אם אני הולך לlocalhost / quote.php. 689 00:41:15,150 --> 00:41:20,450 >> אני רוצה JavaScript להגיש בקשה לאותו דף. 690 00:41:20,450 --> 00:41:22,920 איזה סוג של בקשה עכשיו? 691 00:41:22,920 --> 00:41:27,210 ראינו לפני שהטופס יש שיטה ש= "הודעה" תכונה, 692 00:41:27,210 --> 00:41:29,270 וזה אומר שזה הולך לעשות בקשת POST, 693 00:41:29,270 --> 00:41:32,630 כך שזה לא הולך לשים כל דבר ב-URL, ולא בקשת GET, 694 00:41:32,630 --> 00:41:36,860 שפשוט יפוטרו אם רק ניגשים לדף עם דפדפן האינטרנט, למשל. 695 00:41:36,860 --> 00:41:41,260 עכשיו אנחנו כבר אמרנו שאני רוצה לעשות בקשת POST HTTP 696 00:41:41,260 --> 00:41:44,840 לדף הממוקם בquote.php. 697 00:41:44,840 --> 00:41:51,490 כששלחנו את הטופס, זכור שאנחנו יכולים לגשת לרכיבי הקלט בתוכו של הטופס 698 00:41:51,490 --> 00:41:54,430 עם שמשתנה _POST $. 699 00:41:54,430 --> 00:41:58,710 עד כה בסיפור שלא שלחו בפועל לאורך כל נתונים עדיין. 700 00:41:58,710 --> 00:42:00,640 שמנו רק אמרתי אנחנו עושים את בקשת AJAX 701 00:42:00,640 --> 00:42:03,200 והנה הסוג של בקשה אנחנו עושים. 702 00:42:03,200 --> 00:42:07,090 עכשיו אנחנו צריכים בעצם לשלוח כמה נתונים לדף. 703 00:42:07,090 --> 00:42:10,930 כדי לעשות זאת אנחנו יכולים להשתמש במאפיין זה נקרא נתונים. 704 00:42:10,930 --> 00:42:14,950 הערך של מאפיין זה הוא למעשה מערך אסוציאטיבי. 705 00:42:14,950 --> 00:42:19,390 הסיבה לכך היא שהוא מאפשר לנו לשלוח יותר מסתם חתיכה 1 של נתונים. 706 00:42:19,390 --> 00:42:24,750 זו הסיבה שיש לנו הסוגריים המסולסלים האלה כאן מקוננים בתוך סוגריים מסולסלים האחרים אלה. 707 00:42:24,750 --> 00:42:29,680 את המפתחות במערכים האסוציאטיביים האלה הולכים להיות אותו הדבר 708 00:42:29,680 --> 00:42:32,630 אלה מייחס את השם ברכיבי הטופס שלנו. 709 00:42:32,630 --> 00:42:35,740 זה אומר שאם אני שולח יחד מפתח של סמל, 710 00:42:35,740 --> 00:42:41,870 זה אומר שדף PHP שלי יכול לגשת למידע זה עם _POST $ [סמל] 711 00:42:41,870 --> 00:42:44,640 בדיוק כמו שעשינו בעבר כאשר היינו הגשת טופס. 712 00:42:44,640 --> 00:42:47,090 ועכשיו לנתונים בפועל אנחנו רוצים לשלוח 713 00:42:47,090 --> 00:42:50,790 הולך להיות בתוך הערך של מערך אסוציאטיבי זה. 714 00:42:50,790 --> 00:42:54,070 >> אנחנו מאוחסנים טקסט זה בסמל שנקרא משתנה, 715 00:42:54,070 --> 00:42:57,380 ואז אנחנו שולחים את איתי עכשיו מפתח של סמל 716 00:42:57,380 --> 00:43:01,380 וערך של מה שהקליד פנימה המשתמש 717 00:43:01,380 --> 00:43:06,270 עכשיו אנחנו עשינו בקשת HTTP זה, קובץ ה-PHP שלנו להורג, 718 00:43:06,270 --> 00:43:11,480 וזה הולך לשלוח כמה נתונים חזרו עכשיו ללקוח שפשוט עשו בקשה זו. 719 00:43:11,480 --> 00:43:15,220 עכשיו אנחנו צריכים להגיב לכל מה שאמר לנו השרת. 720 00:43:15,220 --> 00:43:20,180 כדי לעשות את זה יש לנו נכס זה אחרון קרא כאן הצלחה. 721 00:43:20,180 --> 00:43:24,240 הערך של מפתח להצלחה זה בעצם הולך להיות פונקציה, 722 00:43:24,240 --> 00:43:26,910 וזה אחד מהדברים המגניבים שאפשר לעשות עם JavaScript. 723 00:43:26,910 --> 00:43:31,720 לא רק אתה יכול לי ints או מערכים כערך בתוך מערך אסוציאטיבי, 724 00:43:31,720 --> 00:43:34,170 אנחנו גם יכולים להיות פונקציה. 725 00:43:34,170 --> 00:43:36,380 אז באומרו הצלחה, זה המפתח שלי. 726 00:43:36,380 --> 00:43:38,830 מעי גס אומר כאן מגיע הערך, 727 00:43:38,830 --> 00:43:41,810 ועכשיו את הערך של זה הוא למעשה פונקציה. 728 00:43:41,810 --> 00:43:44,460 אז אנחנו לא צריכים לתת פונקציה זו שם כשלעצמה. 729 00:43:44,460 --> 00:43:48,820 אנחנו רק יכולים להגיד שזה הולך להיות תפקיד כלשהו. זה הולך לקחת את הטיעון 1. 730 00:43:48,820 --> 00:43:51,190 הטיעון לתפקיד זה הוא הולך להיות 731 00:43:51,190 --> 00:43:54,460 מה השרת שלח אותנו חזרה מן הבקשה. 732 00:43:54,460 --> 00:43:57,750 בדיוק כמו כאשר הדפדפן שלנו הופך את בקשה, השרת שולח משהו בחזרה 733 00:43:57,750 --> 00:43:59,060 והדפדפן מציג אותו, 734 00:43:59,060 --> 00:44:03,030 בהקשר שלנו AJAX פשוט עשה בקשה, השרת שלח משהו בחזרה, 735 00:44:03,030 --> 00:44:07,110 ועכשיו יש לנו שמיוצגים כמחרוזת. 736 00:44:07,110 --> 00:44:11,280 עם מחרוזת שאני רק רוצה להציג את זה בדף. 737 00:44:11,280 --> 00:44:14,040 כדי לעשות את זה אני הולך יש בורר אחד אחרון. 738 00:44:14,040 --> 00:44:17,570 אני רוצה לבחור את האלמנט במחיר הזהות. 739 00:44:17,570 --> 00:44:20,710 זה רק div ריק שיצרתי בדף, 740 00:44:20,710 --> 00:44:26,640 ואני רוצה להגדיר את התוכן שdiv כדי להיות מה שהשרת שלח אותנו בחזרה. 741 00:44:26,640 --> 00:44:30,280 אני כבר ממש שונה quote.php קצת. 742 00:44:30,280 --> 00:44:33,460 >> במקום להתקשר לדקלם ו טיוח חלק הדף, 743 00:44:33,460 --> 00:44:38,100 quote.php עכשיו פשוט הולך להדפיס את הערך של המנייה כמחרוזת. 744 00:44:38,100 --> 00:44:41,880 אז אם היית ממש לבקר בדף, היית פשוט רואה שמחרוזת קטנה 745 00:44:41,880 --> 00:44:45,030 מכל מה שהוא מחיר המנייה. 746 00:44:45,030 --> 00:44:50,170 הדבר אחרון שאנחנו צריכים לעשות כאן הוא רק לוודא שפונקציה זו מחזירה שקר. 747 00:44:50,170 --> 00:44:53,560 מה זה אומר הוא שאם אני פנימי של מטפל באירועים 748 00:44:53,560 --> 00:44:57,300 ומטפל באירועים שחוזרים כוזב במקום לחזור אמיתי, 749 00:44:57,300 --> 00:45:01,510 זה אומר שאני לא רוצה שאירוע המקורי לירות. 750 00:45:01,510 --> 00:45:05,270 במקרה זה, אם לא היה לנו שום קובץ והגשנו את טופס, 751 00:45:05,270 --> 00:45:08,280 דפדפן האינטרנט שלנו ילך ויגיד, "אני הולך לשלוח את הנתונים יחד" 752 00:45:08,280 --> 00:45:10,130 והם מתכוונים לשלוח אותך לדף אחר. 753 00:45:10,130 --> 00:45:14,360 כי אנחנו שימוש ב-AJAX עכשיו, אין צורך לשלוח את המשתמש לדף אחר. 754 00:45:14,360 --> 00:45:17,920 אנחנו רק כדי להציג את התוצאות באופן דינמי באותו הדף. 755 00:45:17,920 --> 00:45:21,460 אנחנו באמת לא רוצים שהם ילכו לשום מקום, ואני רוצה להישאר באותו הדף. 756 00:45:21,460 --> 00:45:27,060 אז על ידי החזרת שווא, אנו מבטיחים כי הטופס לא יעשה זאת בשבילנו. 757 00:45:27,060 --> 00:45:31,170 בואו נסתכל על מה שזה ממש נראה כמו. 758 00:45:31,170 --> 00:45:34,180 דף הציטוט שלנו נראה אותו הדבר. 759 00:45:34,180 --> 00:45:37,240 בואו תמשכו אותי המפקח כאן למטה כדי שנוכל לראות מה קורה. 760 00:45:37,240 --> 00:45:40,270 להפוך אותו לקצת פחות ענק. 761 00:45:40,270 --> 00:45:44,590 זכור, אם אנחנו פותחים כרטיסיית הרשת, זה שבו אנו יכולים לראות את כל בקשות HTTP 762 00:45:44,590 --> 00:45:47,570 שמתרחשים בדף. 763 00:45:47,570 --> 00:45:52,890 >> לסמל תן לי להקליד בAAPL ולחץ על קבל הצעה. 764 00:45:52,890 --> 00:45:56,720 עכשיו ראה שנתח של אפל עולה איזה מספר הדולרים 765 00:45:56,720 --> 00:46:00,410 פשוט הופיע בדף, אבל את כתובת האתר לא השתנתה בכלל. 766 00:46:00,410 --> 00:46:04,570 למעשה, כאן היא בקשת HTTP שאנחנו פשוט עשינו. 767 00:46:04,570 --> 00:46:09,980 עשינו בקשת POST לquote.php. זה הגיוני. 768 00:46:09,980 --> 00:46:12,800 זה מה שהשרת שלח לנו בחזרה. 769 00:46:12,800 --> 00:46:16,320 זה כבר לא את המסמך הזה ענקי HTML עם תמונות ודברים כאלה, 770 00:46:16,320 --> 00:46:20,920 זה רק שורת הטקסט, ואז סתם מוצגים השורה של טקסט. 771 00:46:20,920 --> 00:46:26,290 אם אחזור לכותרות ולראות מה אנחנו בעצם נשלחנו בתוך בקשת HTTP זה, 772 00:46:26,290 --> 00:46:33,950 אנחנו יכולים לראות כאן למטה ששלחנו יחד מפתח של סמל וערך של AAPL, 773 00:46:33,950 --> 00:46:36,430 וזה מה שמשתמש הקליד פנימה 774 00:46:36,430 --> 00:46:39,230 זה נחמד, אבל זה עדיין קצת מעצבן. 775 00:46:39,230 --> 00:46:42,490 אני עדיין צריך ללחוץ על כפתור זה כדי לקבל את מחירי המניות. 776 00:46:42,490 --> 00:46:45,880 אנחנו אנשים עסוקים ואין לנו זמן ללחץ על כפתורים. 777 00:46:45,880 --> 00:46:49,910 גוגל הבינה את זה לפני זמן מה, כאשר הם מיושמים ב-Google Instant. 778 00:46:49,910 --> 00:46:53,590 מה שגוגל עושה היא מיידי כמו שאתה מקליד זה רק מתחיל להציג תוצאות עבורך 779 00:46:53,590 --> 00:46:56,520 אז אתה לא צריך לדאוג לאף לחיצה על חיפוש. 780 00:46:56,520 --> 00:46:58,730 למעשה, סיפור משעשע הקשור לזה. 781 00:46:58,730 --> 00:47:01,100 לאחר ש-Google המיידי יצא, אנשים היינו כמו, "וואו, זה הוא סופר מדהים". 782 00:47:01,100 --> 00:47:02,540 "זה כל כך מגניב". 783 00:47:02,540 --> 00:47:05,950 ותלמיד למטה בסטנפורד שהיה בן 19 באותה העת 784 00:47:05,950 --> 00:47:09,000 עשה האתר הזה שנקרא YouTube מיידי. 785 00:47:09,000 --> 00:47:13,170 כל המיידי YouTube עושה הוא לחפש ביעילות YouTube מייד. 786 00:47:13,170 --> 00:47:17,020 אז במקום שיצטרך ללכת לYouTube.com ופגע חיפוש, 787 00:47:17,020 --> 00:47:21,650 כאשר אני מתחיל להקליד למשהו מיידי כמו YouTube CS50, 788 00:47:21,650 --> 00:47:25,320 אנחנו יכולים לראות כאן שזה ניסיון על חיבור אינטרנט איטי 789 00:47:25,320 --> 00:47:28,500 לאכלס את התוצאות הללו לחיות. 790 00:47:28,500 --> 00:47:35,590 כדי לעשות זאת אנחנו יכולים באמת לעשות שינוי פשוט מאוד לקובץ quote.js. 791 00:47:35,590 --> 00:47:40,900 כרגע אנחנו מצרפים את האירוע הזה כאשר הטופס נשלח. 792 00:47:40,900 --> 00:47:43,760 אנחנו לא באמת רוצים לגרום למשתמש לשלוח טופס זה יותר, 793 00:47:43,760 --> 00:47:48,570 אז בואו במקום לפטר את האירוע הזה בכל פעם שהמשתמש לוחץ על מקש. 794 00:47:48,570 --> 00:47:53,200 כדי לעשות זאת בואו 1 לשנות את האירוע מלהגיש לkeyup. 795 00:47:53,200 --> 00:47:55,740 זה אומר שבמקום להמתין לטופס לשלוח, 796 00:47:55,740 --> 00:47:58,490 בכל פעם שתלחץ על מקש כלשהו, ​​שמשהו עומד לקרות. 797 00:47:58,490 --> 00:48:02,030 זה כבר לא הגיוני לצרף keyup אירוע זה לכל הטופס. 798 00:48:02,030 --> 00:48:05,080 אנחנו באמת רק אכפת שתיבת החיפוש. 799 00:48:05,080 --> 00:48:09,320 >> כדי לבחור את זה עכשיו, אנחנו יכולים לשנות את זה כדי להיות, ולא טופס הצעת מחיר, 800 00:48:09,320 --> 00:48:14,220 טופס הצעת מחיר ויהיה לנו קלט (הקלד = טקסט) או שאנחנו יכולים לומר (שם = סמל) - 801 00:48:14,220 --> 00:48:16,420 מה שאנחנו רוצים. 802 00:48:16,420 --> 00:48:18,650 עכשיו יש עוד דבר אחד אחרון שאנחנו צריכים לעשות. 803 00:48:18,650 --> 00:48:21,190 זכור כאן כשאמרנו חזרת השווא 804 00:48:21,190 --> 00:48:24,370 אנחנו אמרנו שאנחנו לא רוצים שאירוע ברירת המחדל לירות. 805 00:48:24,370 --> 00:48:26,390 אבל זה פשוט כל כך קורה שאם אנחנו להשבית את זה עכשיו, 806 00:48:26,390 --> 00:48:29,660 כל מה שאנחנו מקלידים לא הולכים להופיע בדפדפן של עוד 807 00:48:29,660 --> 00:48:33,000 כי זאת תהיה התנהגות ברירת המחדל של הקלדה לתוך תיבת טקסט. 808 00:48:33,000 --> 00:48:38,660 אנחנו כבר לא רוצים לעקוף את זה, אז בואו נהרוס תמורה זו מוטעה. 809 00:48:38,660 --> 00:48:44,800 אם אנחנו חוסכים את זה ולטעון מחדש את הדף, עכשיו כשאני מתחיל להקליד AAPL 810 00:48:44,800 --> 00:48:50,160 תראה שמחיר המנייה בתחתית כאן משלים באופן אוטומטי. 811 00:48:50,160 --> 00:48:53,150 אז הנה הוא מיידי אוצר CS50. 812 00:48:53,150 --> 00:48:55,860 למעשה סיפור מצחיק על YouTube המיידי 813 00:48:55,860 --> 00:48:59,420 הוא סטודנט שרק סוג של כתב את זה כפרויקט 1-לילה, 814 00:48:59,420 --> 00:49:03,800 ולמחרת הוא הציע לי עבודה ביוטיוב המנכ"ל. 815 00:49:03,800 --> 00:49:10,610 אז פשוט כמו זה, אתה CS50 סטודנטים, פרויקטי הגמר שלך יכול לסדר לך עבודה ביוטיוב. 816 00:49:10,610 --> 00:49:14,720 משהו כזה הוא רעיון ממש מגניב לפרויקט גמר, נכון? 817 00:49:14,720 --> 00:49:18,170 היו לנו חלק מהפונקציונליות קיימת שאנחנו רוצים לשלב עם. 818 00:49:18,170 --> 00:49:20,330 אנו משפרים את חווית המשתמש קצת, 819 00:49:20,330 --> 00:49:24,340 ופתאום מחפש משהו ב-YouTube מיידי יכול להיות הרבה יותר קלה 820 00:49:24,340 --> 00:49:27,290 מלחפש אותו ב-YouTube הרגיל. 821 00:49:27,290 --> 00:49:30,790 אז זה AJAX בקליפת אגוז. 822 00:49:30,790 --> 00:49:34,860 >> בדוגמאות שיוסף היה מראה, ראו הרבה autocompletes, 823 00:49:34,860 --> 00:49:39,250 וautocompletes האלה הם באמת, באמת שימושיים, כי אנחנו לא צריכים לזכור - 824 00:49:39,250 --> 00:49:41,770 לדוגמה, אם אתה לא זוכר את מחיר המנייה של אפל 825 00:49:41,770 --> 00:49:45,110 ואנחנו רק יודעים שזה משהו aa, ולא רק אומר לי, 826 00:49:45,110 --> 00:49:48,740 "חלקיו של דבר זה עולה הרבה כסף זה", 827 00:49:48,740 --> 00:49:52,540 הייתי סוג של רוצה לדעת מה המניות תתחלנה עם aa. 828 00:49:52,540 --> 00:49:58,340 אנחנו יכולים לעשות את זה ממש יפה עם ספריית המגף שכבר נכללה 829 00:49:58,340 --> 00:50:01,380 בתוך CS50 אוצר. 830 00:50:01,380 --> 00:50:09,390 אם אתה בא לכאן, לתג JavaScript ולגלול למטה לTypeahead, 831 00:50:09,390 --> 00:50:13,730 זה רק תוסף נחמד שמישהו כבר כתב לנו, 832 00:50:13,730 --> 00:50:16,980 ואנחנו יכולים בקלות להשתמש בפונקציונליות שלו ככה. 833 00:50:16,980 --> 00:50:21,410 אני הקלדתי והנה רשימה של כמה מדינות שמתחילות עם א ' 834 00:50:21,410 --> 00:50:25,360 נניח שאני חושב שזה ממש מגניב וזה זמן בשבילי כדי לכלול את זה בדף שלי. 835 00:50:25,360 --> 00:50:28,300 מתברר שזה ממש ממש פשוט. 836 00:50:28,300 --> 00:50:32,810 בואו נקפוץ לכאן כדי quote3.js. 837 00:50:34,890 --> 00:50:37,380 הקובץ שלי נראה קצת שונה. 838 00:50:37,380 --> 00:50:39,700 כאן למטה את כל הדברים של AJAX שלי הוא זהה. 839 00:50:39,700 --> 00:50:43,170 אני רוצה לטעון את נתוני המניות מבלי לעבור לדף אחר. 840 00:50:43,170 --> 00:50:46,220 אבל עכשיו אני רוצה להשתמש בתוסף זה. 841 00:50:46,220 --> 00:50:51,020 תיעוד המגף יש דוגמאות גדולות של איך בדיוק אני יכול לעשות את זה. 842 00:50:51,020 --> 00:50:54,350 אני רוצה לומר, "הנה הקלט שאני רוצה בהשלמה אוטומטית", 843 00:50:54,350 --> 00:50:56,640 ואני הולך לקרוא לפונקציה זו נקראת typeahead, 844 00:50:56,640 --> 00:50:59,730 וזה הולך לטפל בכל דברי Typeahead עבורנו. 845 00:50:59,730 --> 00:51:02,090 זה יהיה לאתחל את הרשימה, הוא יעשה כל הסינון שלנו. 846 00:51:02,090 --> 00:51:06,680 הדבר היחיד שהוא צריך לדעת מה הוא נתונים שאנחנו autocompleting ב. 847 00:51:06,680 --> 00:51:10,480 אז התבררתי לי מפתח זה רק על ידי קריאת התיעוד ולהסתכל על הדוגמות. 848 00:51:10,480 --> 00:51:14,150 אם אני נותן לו מפתח של מקור, הערך של מפתח זה 849 00:51:14,150 --> 00:51:17,770 הוא רק חלק המערך של דברים שאני רוצה בהשלמה אוטומטית. 850 00:51:17,770 --> 00:51:20,180 משתנה זה בא מקובץ אחר זה. 851 00:51:20,180 --> 00:51:23,400 אני פותח את symbols.js. 852 00:51:23,400 --> 00:51:27,980 >> symbols.js זה רק מערך גדול באמת זה שמכיל מחרוזות 853 00:51:27,980 --> 00:51:32,080 מכל סמלי מניות אלה מנאסד"ק. 854 00:51:32,080 --> 00:51:42,190 אם אני רוצה לקפוץ לראש HTML, כך jharvard, vhosts, globalhost, HTML, התבניות, 855 00:51:42,190 --> 00:51:45,820 quote_form. 856 00:51:45,820 --> 00:51:50,910 מאחר שכעת נקרא quote3.js, נתנו לי להחליף את קובץ JavaScript אני כולל כאן. 857 00:51:50,910 --> 00:51:55,110 עכשיו יש לי quote3.js, אז אני הולך לטעון שבקובץ JavaScript הנפרד, 858 00:51:55,110 --> 00:51:57,910 אחד שיש לי שBootstrap השלמה אוטומטית. 859 00:51:57,910 --> 00:52:04,430 עכשיו כשאני קופץ בחזרה לדפדפן, לטעון מחדש את הדף, ואני מתחיל להקליד aa, 860 00:52:04,430 --> 00:52:06,880 יש ההשלמה האוטומטית שלי. וזה היה ממש פשוט כמו זה. 861 00:52:06,880 --> 00:52:11,400 היה לי קו 1 של קוד שרק אמר, "הנה הדברים שאני רוצה להשלמה אוטומטית על," 862 00:52:11,400 --> 00:52:16,590 ופתאום יש לי פונקציונלי ממש ממש נחמד זה לא עם המון מאמץ. 863 00:52:16,590 --> 00:52:19,810 כפי שאתה מפתח אתרי אינטרנט ובמיוחד לוואי הקצה הקדמי של דברים, 864 00:52:19,810 --> 00:52:21,840 אתה הולך למצוא את זה מקרה הרבה. 865 00:52:21,840 --> 00:52:25,700 יש הרבה, הרבה, הרבה ספריות ממש מגניבות בחינם שם בחוץ 866 00:52:25,700 --> 00:52:30,190 זה עושה את זה סופר קל לעשות דברים כאלה. 867 00:52:30,190 --> 00:52:37,230 מישהו יכול לחשוב על כל חסרונות של פשוט autocompleting על רשימה הגדולה של סמלים? 868 00:52:37,230 --> 00:52:41,580 מה יכול להיות משהו שהוא לא הכי הטוב בגישה זו? 869 00:52:42,790 --> 00:52:45,960 כן. >> [תלמיד] זמן, אם יש לך הרבה [לא ברור] 870 00:52:45,960 --> 00:52:50,420 כן. כרגע אנחנו מורידים קובץ JavaScript הענק הזה ויש הרבה סימנים. 871 00:52:50,420 --> 00:52:54,360 ולכן אם יש לנו טונות של חומרים, סוג זה של יכולת להגדיל את זמן האחזור של לא מחפש רק 872 00:52:54,360 --> 00:52:56,600 אלא גם מוריד את הקובץ עצמו. 873 00:52:56,600 --> 00:52:58,670 גדול. עוד משהו? 874 00:53:01,950 --> 00:53:05,280 נכון לעכשיו אין תחושה אמיתית של שייכות. 875 00:53:05,280 --> 00:53:08,190 אם אני מקליד בA, חברות שתופענה כאן 876 00:53:08,190 --> 00:53:11,220 אולי לא תהיה החברות הפופולריות ביותר שמתחילות עם א ' 877 00:53:11,220 --> 00:53:17,130 >> לפני שאני מקבל אפל, זה עלול לקחת עוד כמה תווים כדי למצוא את מה שאני מחפש. 878 00:53:17,130 --> 00:53:20,420 השלמה אוטומטית זה אין תחושה של שייכות. 879 00:53:20,420 --> 00:53:24,400 זה רק הולך לומר, "כל דבר שמתאים לי אני הולך להצגה". 880 00:53:24,400 --> 00:53:30,510 במקום זאת, אני רוצה איכשהו לשלב נגיעה מסוימת לחיפושים שלי. 881 00:53:30,510 --> 00:53:36,440 אם אני הולך לכאן כדי אוצר יאהו, finance.yahoo.com, 882 00:53:36,440 --> 00:53:42,100 אם אני מנסה להיכנס לסמל בדף של יאהו האוצר 883 00:53:42,100 --> 00:53:52,310 ואני מתחיל להקליד goog, יש לי רשימה הנחמדה הזה של דברים. 884 00:53:52,310 --> 00:53:57,100 ברור, זה נראה כמו יאהו האוצר עושה משהו יותר מתוחכם כאן. 885 00:53:57,100 --> 00:53:59,790 יש להם נגיעה מסוימת ויש להם גם מידע נוסף 886 00:53:59,790 --> 00:54:01,430 כמו השם של המנייה. 887 00:54:01,430 --> 00:54:05,850 זה משהו שאני באמת לא יכול לקבל רק עם רשימת המלאי שלי של סמלים. 888 00:54:05,850 --> 00:54:09,520 אני רוצה את זה ואז אני הולך לקחת את זה. 889 00:54:09,520 --> 00:54:11,790 כדי לעשות את זה בואו נעשה כמה דברים. 890 00:54:11,790 --> 00:54:15,580 בואו ראשון לפתוח את המפקח על דף זה 891 00:54:15,580 --> 00:54:18,100 בגלל שראינו שדף זה אינו מחדש כלל, 892 00:54:18,100 --> 00:54:21,960 כך שזה כנראה שימוש ב-AJAX איכשהו לטעינת הנתונים שלה. 893 00:54:21,960 --> 00:54:23,920 אנחנו יכולים לגלות מה נתונים שהוא טוען. 894 00:54:23,920 --> 00:54:28,390 אם אני לוחץ על כרטיסיית רשת זו, אלה הולכים להיות כל הבקשות שמתחילות להיות מפוטרים. 895 00:54:28,390 --> 00:54:34,020 עכשיו, אם אני מקליד בגו, אנו יכולים לראות שיש לי רק בקשת HTTP חדשה. 896 00:54:34,020 --> 00:54:37,490 זה כנראה שם נתונים שמגיעים. 897 00:54:37,490 --> 00:54:41,990 ואכן, אם אני מסתכל על כתובת אתר זה, וזה קצת מוזר בשם, 898 00:54:41,990 --> 00:54:46,930 אנו יכולים לראות שזה בדיוק איפה יאהו שולח את הנתונים שלה מ. 899 00:54:46,930 --> 00:54:53,400 >> יצרתי קובץ נפרד בשם suggest.php זה דומה מאוד ברוחו לבדיקת התפקוד. 900 00:54:53,400 --> 00:54:57,730 זה בעצם הולך לעשות שאילתא לכתובת האתר של יאהו, תחזור חלק מנתונים, 901 00:54:57,730 --> 00:54:59,750 ולשלוח אותו חזרה אליי. 902 00:54:59,750 --> 00:55:02,570 כעת, במקום להשתמש ברשימה זו גדולה, עצומה של סמלים, 903 00:55:02,570 --> 00:55:05,280 אני יכול להשתמש בדברים הרלוונטיים הנחמדים של יאהו, 904 00:55:05,280 --> 00:55:08,150 ואני לא צריך להוריד שקובץ JavaScript המסיבי. 905 00:55:08,150 --> 00:55:12,040 אני רק הולך לניתץ את סמלי המניות ממש הרלוונטיים. 906 00:55:12,040 --> 00:55:13,960 בואו לקפוץ לתוך זה. 907 00:55:13,960 --> 00:55:17,360 אז html, js. אנחנו נמצאים עכשיו בquote4. 908 00:55:17,360 --> 00:55:22,120 עכשיו אנחנו כבר לא משתמשים שרשימה הגדולה של קבצי JavaScript. 909 00:55:22,120 --> 00:55:24,430 אבל יש סוג קטן של בעית העיצוב כאן. 910 00:55:24,430 --> 00:55:28,200 אנחנו אמרנו שבAJAX הוא אסינכרוני. 911 00:55:28,200 --> 00:55:31,000 משמעות של זה היא שכשאני עושה את בקשת AJAX, 912 00:55:31,000 --> 00:55:36,490 כך ממש כאן, על קו 8, זה המקום שבי בקשת AJAX שלי הוא ירה בפועל. 913 00:55:36,490 --> 00:55:40,370 בואו נגיד שעכשיו יש לי קצת קוד כאן למטה שהולך לעשות כמה דברים 914 00:55:40,370 --> 00:55:43,930 רוצים להזהיר את המשתמש או משהו כזה שינוי בדף. 915 00:55:43,930 --> 00:55:49,830 מה שלא יקרה הוא הדפדפן לא הולך לחכות לבקשה זו כדי להמשיך 916 00:55:49,830 --> 00:55:53,480 לפני שירד ופגע בקו זה. 917 00:55:53,480 --> 00:55:55,900 זה חלק אסינכרוני. 918 00:55:55,900 --> 00:55:58,400 זה הולך לביצוע בקשה זו ואומרת, "בכל פעם שאתה מסיים, 919 00:55:58,400 --> 00:56:03,080 "לחזור ולקרוא לפונקציה שאמרתי לך להתקשר אל החלק הפנימי של הצלחה". 920 00:56:03,080 --> 00:56:07,300 זה אומר שאנחנו לא יכולים פשוט להוריד את כל המניות מראש. 921 00:56:07,300 --> 00:56:10,300 אנחנו צריכים להגיש את הבקשה ולחכות למשהו שיחזור. 922 00:56:10,300 --> 00:56:13,330 זה אומר שלפני, הייתי יכול פשוט להגיד מגף, 923 00:56:13,330 --> 00:56:15,580 "הנה הרשימה של דברים שאני רוצה שההשלמה אוטומטית על". 924 00:56:15,580 --> 00:56:18,950 אנחנו כבר לא יכולים לעשות את זה יותר, כי אנחנו לא יודעים 925 00:56:18,950 --> 00:56:21,780 מה שאנחנו רוצים בעצם השלמה אוטומטית ב. 926 00:56:21,780 --> 00:56:25,190 למזלנו, מגף חשב על זה, כי אלה בחורים חכמים שיושבים שם, 927 00:56:25,190 --> 00:56:30,160 והם בעצם נתנו לנו דרך אחרת כדי לטעון תוסף Typeahead זה. 928 00:56:30,160 --> 00:56:35,630 לפני כן, שוויו של רכוש מקור זה היה רק ​​מערך זה גדול של דברים להשלמה אוטומטית ב. 929 00:56:35,630 --> 00:56:39,580 >> עכשיו רכוש המקור הוא למעשה פונקציה, 930 00:56:39,580 --> 00:56:44,580 ומטרתו של תפקיד זה הוא להבין מה את הדברים להשלמה אוטומטית הם. 931 00:56:44,580 --> 00:56:48,730 איך שזה הולך להבין שזה הולך לשאול אוצר יאהו 932 00:56:48,730 --> 00:56:51,750 מה הדברים הטובים ביותר להשלמה אוטומטית הם. 933 00:56:51,750 --> 00:56:54,500 כדי לעשות את זה אני הולך להגיש בקשת AJAX דומה מאוד. 934 00:56:54,500 --> 00:56:59,010 אני הולך לבקש דף זה בsuggest.php. 935 00:56:59,010 --> 00:57:01,360 אני רוצה לשלוח לאורך הסמלים עדיין. 936 00:57:01,360 --> 00:57:05,570 ועכשיו את ההצלחה שלי, אמרה לי התיעוד Bootstrap 937 00:57:05,570 --> 00:57:09,130 שכדי לאכלס את הרשימה הזאת של דברים, 938 00:57:09,130 --> 00:57:14,370 כל מה שאני צריך לעשות הוא לעבור במערך זה עכשיו לפונקציה של הקריאה החוזרת. 939 00:57:14,370 --> 00:57:15,660 אבל חכה רגע. 940 00:57:15,660 --> 00:57:20,240 אם זה אמור להיות מערך וAJAX שולח אותי חזרה טקסט, 941 00:57:20,240 --> 00:57:22,720 איך זה אפשרי? 942 00:57:22,720 --> 00:57:27,910 זה מציג דרך חדשה להחלפת נתונים הנקראים JSON. 943 00:57:27,910 --> 00:57:33,000 במקרה זה לא רק שאנחנו שולחים חזרה מחרוזת פשוטה של ​​טקסט. 944 00:57:33,000 --> 00:57:37,670 עכשיו יש לנו עסק עם רשימה מורכבת יותר מסמלי מניות. 945 00:57:37,670 --> 00:57:41,730 סמלי מניות אלו יכולות לכלול גם דברים כמו השם של החברה או את המחירים הנוכחיים. 946 00:57:41,730 --> 00:57:47,550 רק באמצעות מחרוזת ארוכה גדולה שלא מעוצבת בכל דרך לחיזוי 947 00:57:47,550 --> 00:57:51,970 הוא לא הולך להיות הדרך הטובה ביותר לקבל את הנתונים מהשרת של יאהו אליי 948 00:57:51,970 --> 00:57:54,540 בדרך שאני יכול בקלות להבין. 949 00:57:54,540 --> 00:58:01,280 JSON הוא טכנולוגיה המנצלת כיצד אנו יוצרים מערכים אסוציאטיביים ב-JavaScript. 950 00:58:01,280 --> 00:58:04,510 זה נראה הרבה כמו מערך אסוציאטיבי JavaScript, 951 00:58:04,510 --> 00:58:06,600 ולמעשה, זה בגלל שזה הוא. 952 00:58:06,600 --> 00:58:09,710 JSON עומד לסימון אובייקט JavaScript. 953 00:58:09,710 --> 00:58:15,020 זה בעצם פורמט מוסכם להעברת נתונים הלוך ושוב. 954 00:58:15,020 --> 00:58:18,280 הנה זה אובייקט JSON או מערך אסוציאטיבי זה JSON 955 00:58:18,280 --> 00:58:21,010 הוא שולח לי כמה נתונים על קורס. 956 00:58:21,010 --> 00:58:25,110 >> את המפתחות של מערך זה הם כמובן דברים כמו שיש לו ערך של cs50, 957 00:58:25,110 --> 00:58:29,140 וכאן אנו יכולים לראות שאני יכול להיות בעל ערך שהוא מערך. 958 00:58:29,140 --> 00:58:32,730 אני לא צריך לעשות דברים כמו לנתח את המחרוזות ולחפש פסיקים 959 00:58:32,730 --> 00:58:35,330 ולעשות דברים מטורפים כמו זה. 960 00:58:35,330 --> 00:58:38,820 בגלל זה הוא הכריז בפורמט JSON זה, 961 00:58:38,820 --> 00:58:43,510 JavaScript ו jQuery כבר יש פונקציות כדי להמיר מחרוזת 962 00:58:43,510 --> 00:58:48,140 שנראה כמו JSON זה לתוך מערך אסוציאטיבי בפועל JavaScript 963 00:58:48,140 --> 00:58:50,440 שאנחנו יכולים לעבוד איתו. 964 00:58:50,440 --> 00:58:56,660 עושה את זה הוא פשוט כמו אומר שהוא כבר לא קובץ, suggest.php זה, 965 00:58:56,660 --> 00:58:59,040 שולח אותי חזרה פשוט מחרוזת הטקסט, 966 00:58:59,040 --> 00:59:01,950 אבל אני יודע שזה הולך להיות שולח אותי חזרה JSON. 967 00:59:01,950 --> 00:59:06,760 זה אומר שJSON ניתן להמיר את המערך אסוציאטיבי של JavaScript. 968 00:59:06,760 --> 00:59:10,830 וכך jQuery, אני רוצה שתעשה את זה בשבילי. 969 00:59:10,830 --> 00:59:13,990 זה אומר שפרמטר זה תגובה כאן, 970 00:59:13,990 --> 00:59:16,070 זה כבר לא רק מחרוזת. 971 00:59:16,070 --> 00:59:19,860 מכיוון שאמרנו לי jQuery שהנה מגיע חלק JSON, 972 00:59:19,860 --> 00:59:22,950 jQuery הולך להיות חכם מספיק כדי לומר, "רצה JSON?" 973 00:59:22,950 --> 00:59:26,890 "אני הולך להפוך אותם למערך אסוציאטיבי בשבילך." 974 00:59:26,890 --> 00:59:32,100 בואו באמת אסתכל על כרטיסיית הרשת פעם אחת יש לנו quote4.js. 975 00:59:32,100 --> 00:59:35,400 אנו נשנה את זה ולטעון מחדש את הדף. 976 00:59:37,150 --> 00:59:41,250 עכשיו אני הולך להקלדה ב- שוב. 977 00:59:41,250 --> 00:59:45,600 עשיתי כמה בקשות לsuggest.php, אבל עכשיו את התגובה הזאת, 978 00:59:45,600 --> 00:59:48,670 ולא רק את המחרוזת, זה JSON. 979 00:59:48,670 --> 00:59:52,580 אז יש לי סד מתולתל פתוח ואמר, "הנה בא מערך אסוציאטיבי". 980 00:59:52,580 --> 00:59:56,830 >> ראשון ויחידה המרכזית של מערך אסוציאטיבי זה נקרא סמלים, 981 00:59:56,830 --> 01:00:00,240 ואז הנה מערך של כל הסמלים הרלוונטיים 982 01:00:00,240 --> 01:00:04,820 באים עכשיו מאוצר יאהו, לא מאותה רשימה ענקית. 983 01:00:06,110 --> 01:00:10,630 ככה אני יכול פשוט לאכלס תוסף השלמה אוטומטי זה 984 01:00:10,630 --> 01:00:14,280 עם נתונים מסוימים שלא מגיעים מקובץ מקומי שכבר ידוע מראש 985 01:00:14,280 --> 01:00:17,490 אלא ממשהו אחר. 986 01:00:17,490 --> 01:00:21,160 מתבררים שאנחנו באמת יכולים לנצל את הטכנולוגיה בשם jsonp, 987 01:00:21,160 --> 01:00:27,420 או JSON עם ריפוד, שיבטל מתווך suggest.php זה. 988 01:00:27,420 --> 01:00:34,010 אבל במקום לעשות את זה, בואו במקום להעיף מבט על איך אני יכול לשפר את זה עוד יותר. 989 01:00:34,010 --> 01:00:36,040 אני באמת אוהב את Typeahead של המגף. זה ממש נחמד. 990 01:00:36,040 --> 01:00:39,570 אבל אנחנו בדרך טובה בJavaScript ואנחנו רוצים סוג של לעשות זאת בעצמנו, 991 01:00:39,570 --> 01:00:43,870 אולי תסתכל על מה שהתוסף הזה יכול לעשות. 992 01:00:43,870 --> 01:00:46,500 בואו כבר לא משתמש בדבר הזה Typeahead, 993 01:00:46,500 --> 01:00:50,550 ובואו ננסה לעשות את הרשימה הזאת של מניות הציעו את עצמנו. 994 01:00:50,550 --> 01:00:53,790 כאן בquote6.php אנחנו הולכים להתחיל באותה הדרך. 995 01:00:53,790 --> 01:00:58,050 מישהו מקליד בכל פעם שמשהו, אנחנו רוצים להפוך את בקשת AJAX. 996 01:00:58,050 --> 01:01:01,590 זה דומה למיידי אוצר CS50 המקורי שלנו. 997 01:01:01,590 --> 01:01:05,020 במקום לבצע בקשה לquote.php, 998 01:01:05,020 --> 01:01:08,530 עכשיו אנחנו בהגשת בקשה לאותו קובץ כמו קודם, זה suggest.php, 999 01:01:08,530 --> 01:01:12,460 שרק הולך למשוך את הנתונים מYahoo Finance. 1000 01:01:12,460 --> 01:01:19,480 >> שוב, אנחנו עדיין מצפים JSON, אבל עכשיו מאז Typeahead לא עושה את זה בשבילנו, 1001 01:01:19,480 --> 01:01:24,850 אנחנו גם צריכים לשלוח יחד הערך שבתוך תיבת הטקסט הנוכחית. 1002 01:01:24,850 --> 01:01:28,120 עכשיו אנחנו יודעים מה לבקש אוצר יאהו ל, 1003 01:01:28,120 --> 01:01:34,160 ואז עכשיו הנה הפונקציה שאנחנו רוצים להוציא לפועל לאחר שהבקשה משלימה. 1004 01:01:34,160 --> 01:01:36,520 אין לנו את התוסף על מנת להפוך את הרשימה עבורנו, 1005 01:01:36,520 --> 01:01:40,630 אז הנה מקום שבו אנחנו בעצם הולכים לבנות רשימה של הצעות. 1006 01:01:40,630 --> 01:01:44,850 כדי לעשות זאת, הרבה כמו ב-PHP אנו שרשור המחרוזות גדולות האלה של HTML 1007 01:01:44,850 --> 01:01:48,170 אז הדפסת אותן, אנחנו יכולים לעשות את אותו הדבר בדיוק ב-JavaScript. 1008 01:01:48,170 --> 01:01:51,850 ראשון שאנחנו הולכים להתחיל במחרוזת זו נקראת הצעות, 1009 01:01:51,850 --> 01:01:54,590 ומחרוזת זו היא רק הולכת להכיל כ-HTML. 1010 01:01:54,590 --> 01:01:58,320 אנחנו רוצים שזה יהיה רשימה של דברים, ולכן אנחנו הולכים להתחיל עם תג רשימה זו, 1011 01:01:58,320 --> 01:02:03,340 ועכשיו אנחנו הולכים לחזר על כל הסמלים שהוחזרו בחזרה אלינו. 1012 01:02:03,340 --> 01:02:06,500 זכור, כי אנחנו כבר אמרנו datatype: "json", זה לא מחרוזת. 1013 01:02:06,500 --> 01:02:09,500 זה כבר מערך עבורנו. זה ממש מגניב. 1014 01:02:09,500 --> 01:02:13,790 אנחנו יכולים פשוט לומר, "אני רוצה שתצרף רשימת אלמנטים". 1015 01:02:13,790 --> 01:02:16,000 אנחנו נשים אותו בתוך אלמנט בצד זה, 1016 01:02:16,000 --> 01:02:19,030 אנחנו נותנים לו מעמד של הצעות כך שאנחנו יודעים מה זה, 1017 01:02:19,030 --> 01:02:23,880 ועכשיו כאן הוא הסמל שחזרנו מYahoo Finance. 1018 01:02:23,880 --> 01:02:27,230 >> לאחר שיצרנו אלמנט לכל אחד מהסמלים שקבלנו בחזרה, 1019 01:02:27,230 --> 01:02:30,100 אנחנו פשוט רוצים לסגור את הרשימה. 1020 01:02:30,100 --> 01:02:33,040 אז עכשיו הצעות מייצגות קטע HTML הקטן הזה 1021 01:02:33,040 --> 01:02:37,860 שכאשר לשים על דף הולך להיות הרשימה של דברים שאנחנו מחפשים. 1022 01:02:37,860 --> 01:02:41,070 עכשיו בואו בעצם לשים את זה בדף. 1023 01:02:41,070 --> 01:02:46,390 כדי לעשות זאת יצרתי למעשה עוד div ריק ונתתי לו תעודת זהות של הצעות. 1024 01:02:46,390 --> 01:02:52,520 בדומה אנו קובעים את התוכן של div אשר יציג את המחיר של נתוני המלאי, 1025 01:02:52,520 --> 01:02:58,600 עכשיו אנחנו פשוט רוצים להגדיר את התוכן של div זה לכל מחרוזת זו היא 1026 01:02:58,600 --> 01:03:00,290 המכיל סמלים אלה. 1027 01:03:00,290 --> 01:03:07,650 באמצעות שיטת ה-HTML, משתנים זה הצעות, מחרוזת זו, היא מחרוזת של ה-HTML. 1028 01:03:07,650 --> 01:03:13,490 אני רוצה שתיקח את זה HTML ושמת אותו בתוך div בשם הצעות. 1029 01:03:13,490 --> 01:03:15,680 שמנו רק צרפתי משהו DOM עכשיו. 1030 01:03:15,680 --> 01:03:20,360 הוספנו כמה אלמנטים חדשים לDOM שעכשיו אנחנו יכולים להציג בדף. 1031 01:03:20,360 --> 01:03:22,540 בואו לראות איך זה נראה. 1032 01:03:22,540 --> 01:03:29,110 אם תטענו בquote6 ועכשיו אנחנו חוזרים, 1033 01:03:29,110 --> 01:03:34,480 עכשיו כשאני מתחיל להקליד AAPL, אין לנו עוד מגף שההשלמה האוטומטית, 1034 01:03:34,480 --> 01:03:38,470 אבל עכשיו יש לנו רשימה זו שעשינו בעצמנו. 1035 01:03:38,470 --> 01:03:43,230 זה מכוער קצת מTypeahead המגף, למשל, 1036 01:03:43,230 --> 01:03:45,580 אבל זה מאפשר לנו לעשות דבר אחד. 1037 01:03:45,580 --> 01:03:48,660 כשחפשנו באותו תוסף המגף, 1038 01:03:48,660 --> 01:03:52,590 ראה שכאשר אנו autocompleted, אחד מערכי ההשלמה אוטומטית היה AAPL. 1039 01:03:52,590 --> 01:03:54,820 כי לא יכול להיות כל כך מועיל. 1040 01:03:54,820 --> 01:03:59,100 כמשתמש, אני עלול לא לזהות את כל סמלי המניות באופן מיידי. 1041 01:03:59,100 --> 01:04:02,370 מה אני כנראה יותר סיכוי להכיר הם השמות האמיתיים של החברה. 1042 01:04:02,370 --> 01:04:05,310 אז זה לא יהיה ממש מועיל אם במקום לומר AAPL 1043 01:04:05,310 --> 01:04:07,970 זה אמר משהו כמו אפל 1044 01:04:07,970 --> 01:04:12,240 כי אנחנו כבר התגלגלנו זה את עצמנו, אנחנו יכולים באמת לעשות את זה בקלות. 1045 01:04:12,240 --> 01:04:17,630 בואו לפתוח את קובץ הציטוט האחרון שלנו כאן, אז quote7. 1046 01:04:17,630 --> 01:04:23,200 >> אותו דבר. רק יצרתי עוד קובץ PHP שיחזור אלינו יותר מאשר רק הסמלים. 1047 01:04:23,200 --> 01:04:25,550 זה יהיה גם להחזיר לנו שמות של החברה. 1048 01:04:25,550 --> 01:04:28,150 ולכן אנחנו עושים את אותו דבר. אנחנו עושים בקשת AJAX. 1049 01:04:28,150 --> 01:04:32,370 לאחר שהבקשה הושלמה, אנחנו הולכים לבצע פונקציה זו כאן, 1050 01:04:32,370 --> 01:04:36,520 ופונקציה זו הולכת לבנות את מחרוזת גדולה של אלמנטים. 1051 01:04:36,520 --> 01:04:39,520 אבל ההבדל כאן הוא שהערך של רשימות אלה הוא כבר לא רק הסמל, 1052 01:04:39,520 --> 01:04:45,370 עכשיו זה שם. 1053 01:04:45,370 --> 01:04:47,070 אז יש לנו בעיה קטנה אחת. 1054 01:04:47,070 --> 01:04:51,590 כאשר אנו משתמשים בבדיקה שלנו, אנחנו צריכים איכשהו להעביר אותו לסמל. 1055 01:04:51,590 --> 01:04:54,950 אנחנו לא יכולים לעבור בדיקת משהו כמו Microsoft Corporation. 1056 01:04:54,950 --> 01:04:57,900 אנחנו צריכים להעביר את זה MSFT. 1057 01:04:57,900 --> 01:05:01,640 כאשר אנחנו כותבים HTML, יש לנו הרבה תכונות נחמדות מוכללות. 1058 01:05:01,640 --> 01:05:05,440 אולי זה קשור לhref או כיתה. 1059 01:05:05,440 --> 01:05:08,230 אבל מה שאנחנו באמת צריכים עכשיו הוא שכל אחד מהקישורים הללו 1060 01:05:08,230 --> 01:05:11,120 יש סמל מנייה המשויכת אליו. 1061 01:05:11,120 --> 01:05:14,240 אין מובנה בתכונת ה-HTML עבור הסמל מניה, 1062 01:05:14,240 --> 01:05:21,010 אבל למזלנו, HTML5 מאפשר לנו ליצור התכונות שלנו להיות מה שאנחנו רוצים. 1063 01:05:21,010 --> 01:05:24,620 באומרו נתוני סמל, אני כבר הצגתי תכונה חדשה 1064 01:05:24,620 --> 01:05:29,350 שמה שאני המצאתי, וזה בסדר, כי אני הקדמתי אותו עם הנתונים הללו. 1065 01:05:29,350 --> 01:05:34,270 אנחנו הולכים לאחסון פנימי של יש סמל מהמלאי עכשיו. 1066 01:05:34,270 --> 01:05:39,590 מה שזה אומר הוא שלמרות שאנו מציגים את הערך של שמה של החברה 1067 01:05:39,590 --> 01:05:43,380 הפנימי שלנו ההשלמה האוטומטית, אנחנו עדיין זוכרים את הסמל 1068 01:05:43,380 --> 01:05:47,110 המשויך לכל חברה. 1069 01:05:47,110 --> 01:05:50,350 כמו שאנחנו עושים שהוא בתוך האלמנט הזה עצמו. 1070 01:05:50,350 --> 01:05:52,930 אז זה אומר שאנחנו צריכים לעשות יותר שינוי אחד. 1071 01:05:52,930 --> 01:05:57,090 כאשר אנו לוחצים עליו עכשיו, אנחנו צריכים דווקא לנצל תכונת הסמל 1072 01:05:57,090 --> 01:06:00,220 ולא רק את הערך שלו. 1073 01:06:00,220 --> 01:06:05,010 אם גיבוי, אנו מייחסים מטפל באירועים להצעות. 1074 01:06:05,010 --> 01:06:09,280 בכל פעם אחת מההצעות אלה לוחץ עכשיו, אני רוצה לעשות משהו. 1075 01:06:09,280 --> 01:06:13,160 מה שאני רוצה לעשות הוא לשנות את הערך של תיבת קלט. 1076 01:06:13,160 --> 01:06:16,100 עכשיו אני רוצה להגדיר אותה פונקצית val זה. 1077 01:06:16,100 --> 01:06:21,060 >> אז ללא כל ויכוחי פונקצית val זה חוזרת אליך את מה שכבר בתיבת הטקסט, 1078 01:06:21,060 --> 01:06:27,070 אבל אם אתה נותן לו מחרוזת, זה הולך לקחת את המחרוזת שהכניסה אותו לתוך תיבת הטקסט. 1079 01:06:27,070 --> 01:06:28,980 אני בחירת תיבת הטקסט שלה באותו אופן. 1080 01:06:28,980 --> 01:06:31,230 קורא לו בתוך סמל של טופס הצעת מחיר. 1081 01:06:31,230 --> 01:06:37,540 עכשיו אני שולח לו את הערך של נתוני סמל התכונה. 1082 01:06:37,540 --> 01:06:41,560 הדבר הזה כאן הוא חדש, זה $ (זה). 1083 01:06:41,560 --> 01:06:46,850 מה זה מתייחס להוא אלמנט שלוחץ עליו. 1084 01:06:46,850 --> 01:06:50,880 אנחנו יכולים לראות כאן, כי אנחנו לא מצרפים אירוע לחיצה 1085 01:06:50,880 --> 01:06:54,690 לכל רכיב בכיתה של הצעה בנפרד. 1086 01:06:54,690 --> 01:06:57,140 במקום זאת, אנחנו מתקרבים זה קצת אחר. 1087 01:06:57,140 --> 01:07:01,700 במקום שאנחנו אומרים בכל פעם שמשהו בפנים של div הצעות זו, 1088 01:07:01,700 --> 01:07:04,080 שיזכור רק את המכל לרשימה זו, 1089 01:07:04,080 --> 01:07:10,150 אם משהו בתוך div זה לוחץ ויש לו מעמד של הצעה, 1090 01:07:10,150 --> 01:07:13,000 אני רוצה את האירוע הזה כדי לירות. 1091 01:07:13,000 --> 01:07:17,490 בעיקרון מה שזה אומר שאנחנו יכולים לעשות הוא שאנחנו יכולים לעשות שימוש חוזרים באותו מטפל אירוע זה 1092 01:07:17,490 --> 01:07:20,000 לכל הדברים ברשימה. 1093 01:07:20,000 --> 01:07:22,080 אז אנחנו לא צריכים להיות מטפל באירועים אחד לאלמנט הראשון 1094 01:07:22,080 --> 01:07:24,550 ומטפל באירועים שונה לאלמנט השני. 1095 01:07:24,550 --> 01:07:29,880 במקום זאת, אפשר לומר, "אני רוצה אותו המטפל באירועים שיחול על כל דבר ברשימה שלי." 1096 01:07:29,880 --> 01:07:34,420 אבל אנחנו צריכים איכשהו לדעת איזה רכיב היה לוחץ עליו. 1097 01:07:34,420 --> 01:07:38,450 זו מילת מפתח "זה" מייצגת בדיוק את זה. 1098 01:07:38,450 --> 01:07:42,360 זה האובייקט שפשוט לחץ על ידי המשתמש. 1099 01:07:42,360 --> 01:07:47,680 אם אני רק לחצתי על הקישור 3, זה מייצג את האלמנט של שהלינק 3, 1100 01:07:47,680 --> 01:07:51,670 מה שאומר שאני יכול לקבל את התכונה שלו, נתוני הסמל, 1101 01:07:51,670 --> 01:07:57,760 אנחנו יודעים שיש להכיל את הסמל שמשויך לחברה אני פשוט לחצתי. 1102 01:07:57,760 --> 01:08:04,550 אם נקפוץ חזרה לדף המימון שלנו, 1103 01:08:04,550 --> 01:08:08,580 אנו יכולים לראות עכשיו שברגע שאני מתחיל להקליד משהו כמו MSFT, 1104 01:08:08,580 --> 01:08:11,220 אנחנו כבר לא מקבלים רק את סמלי המניות, 1105 01:08:11,220 --> 01:08:13,720 עכשיו אנחנו מקבלים את החברות בפועל. 1106 01:08:13,720 --> 01:08:20,410 אבל כאשר אני לוחץ על אחת מהחברות אלה, 1107 01:08:20,410 --> 01:08:25,180 אנו יכולים לראות שאנחנו למעשה אכלוס תיבת הטקסט לא עם שמה של החברה 1108 01:08:25,180 --> 01:08:29,850 אבל בכל מה שמאוחסן בתוך תכונות נתונים אלה. 1109 01:08:29,850 --> 01:08:32,880 ואז אם אני ממש לראות את אחת מהמרכיבים אלה על ידי לחיצה עליו זכות 1110 01:08:32,880 --> 01:08:36,200 ולחיצה על בדוק אלמנט, אנחנו יכולים ממש לראות איך זה נראה. 1111 01:08:36,200 --> 01:08:40,290 >> זכור, זה משהו שאנחנו יצרנו בתוך שעבור לולאה 1112 01:08:40,290 --> 01:08:42,649 כאשר אנחנו בונים את המחרוזת של ה-HTML. 1113 01:08:42,649 --> 01:08:47,870 אנחנו יכולים לראות כאן שנתוני הסמל הזה יש ערך של MSFT, וזה נהדר. 1114 01:08:47,870 --> 01:08:49,189 זה מה שהיינו מצפה. 1115 01:08:49,189 --> 01:08:53,170 זה סמל וזה מה שיש לנו את הערך שאנחנו צריכים להשתמש 1116 01:08:53,170 --> 01:08:56,140 בתוך תיבת טקסט זו. 1117 01:08:56,140 --> 01:08:58,850 זה מספיק לטופס ההצעה כי זה די משעמם. 1118 01:08:58,850 --> 01:09:02,990 בואו פשוט לעשות כמה שיפורים מהירים לדף תיק העבודות שלנו. 1119 01:09:02,990 --> 01:09:08,109 אם השתמשת CS50 אוצר לזמן ואתה מתחיל לקנות ולמכור הרבה מניות, 1120 01:09:08,109 --> 01:09:11,300 סופו של דבר לוח זה הולך לקבל די גדול, 1121 01:09:11,300 --> 01:09:13,850 ואתה הולך רוצה המניות טיקר, כמובן. 1122 01:09:13,850 --> 01:09:20,350 ברגע שהשולחן הוא ממש ממש גדול, זה יכול להיות שימושי עבור המשתמש לנסות לחפש אותו. 1123 01:09:20,350 --> 01:09:23,290 בתוך תיבת החיפוש, אם אני מתחיל להקליד משהו כמו דיסני 1124 01:09:23,290 --> 01:09:26,359 ומחפש המניות של מיקי המאוס שלי, אנחנו יכולים לראות שהטבלה כעת סינון 1125 01:09:26,359 --> 01:09:28,189 בהתבסס על מה שזה עתה הקליד פנימה 1126 01:09:28,189 --> 01:09:31,640 פונקציונליות זו נראית מסובכת במיוחד, אבל זה ממש ממש קל 1127 01:09:31,640 --> 01:09:33,859 עם jQuery ו-JavaScript. 1128 01:09:33,859 --> 01:09:39,189 קובץ portfolio.php זה כולל קובץ JavaScript נקרא portfolio.js. 1129 01:09:39,189 --> 01:09:41,130 בואו נסתכל על זה. 1130 01:09:41,130 --> 01:09:44,890 אז html, js, תיק. 1131 01:09:44,890 --> 01:09:49,210 כאן מקום שאנחנו עושים שחפשנו על השולחן. 1132 01:09:49,210 --> 01:09:52,750 הדבר הראשון שצריך לעשות הוא לצרף למטפל באירועים שתיבת הטקסט 1133 01:09:52,750 --> 01:09:55,760 כי אנחנו יודעים שאנחנו רוצים סינון הפונקציה לירות 1134 01:09:55,760 --> 01:09:59,800 בכל פעם שמשתמש לוחצת על משהו, כי אין לנו זמן לכפתורי חיפוש. 1135 01:09:59,800 --> 01:10:03,000 הדבר הראשון שאנחנו צריכים לעשות הוא להבין מה המשתמש מחפש, 1136 01:10:03,000 --> 01:10:04,780 בדיוק כמו שעשינו בעבר. 1137 01:10:04,780 --> 01:10:11,320 מילת מפתח זה מתייחס לאלמנט הנוכחי אינטראקציה של המשתמש עם. 1138 01:10:11,320 --> 01:10:14,070 >> בגלל האינטראקציה של המשתמש עם תיבת החיפוש, 1139 01:10:14,070 --> 01:10:17,020 $ זה מייצג את תיבת החיפוש, 1140 01:10:17,020 --> 01:10:21,820 כך this.val נותן לנו את מה שבפנים של תיבת החיפוש שהמשתמש מקליד כרגע. 1141 01:10:22,810 --> 01:10:27,320 אז, עכשיו מה שאנחנו רוצים לעשות הם שאנחנו רוצים לחזר על כל השורות 1142 01:10:27,320 --> 01:10:29,240 בתוך השולחן שלנו. 1143 01:10:29,240 --> 01:10:35,630 כדי לבחור את כל השורות בטבלה שלנו, נתתי לי הטבלה המזהה תיק שולחן, 1144 01:10:35,630 --> 01:10:39,060 וכל שורה מיוצגת על ידי אלמנט TR, 1145 01:10:39,060 --> 01:10:42,080 אז הבורר הזה הולך להחזיר לי את המערך גדול 1146 01:10:42,080 --> 01:10:44,370 של כל השורות בטבלה שלי. 1147 01:10:44,370 --> 01:10:47,010 עכשיו אני רוצה לחזר על מערך זה. 1148 01:10:47,010 --> 01:10:52,390 אני יכול לך ללולאה, אבל למעשה מספק לנו jQuery פונקציה נחמדה בשם "כל אחד". 1149 01:10:52,390 --> 01:10:55,220 מה כל אחד עושה הוא לוקח כל טיעון אחד, 1150 01:10:55,220 --> 01:10:57,090 והטענה שהיא פונקציה. 1151 01:10:57,090 --> 01:11:02,760 מהו עומד לעשות הוא שזה הולך ליישם פונקציה שלכל אלמנט פנימי של רשימה זו. 1152 01:11:02,760 --> 01:11:05,550 פונקציה זו לוקחת טיעון אחד זה דואר, 1153 01:11:05,550 --> 01:11:10,090 וכאשר פונקציה זו מופעלת, דואר זה הולך להיות מוחלף בשורה הראשונה, 1154 01:11:10,090 --> 01:11:12,070 אז בשורה שנייה, ולאחר מכן בשורה השלישית. 1155 01:11:12,070 --> 01:11:15,150 אגב זה, זה אותו הדבר כמו בריצה ללולאה 1156 01:11:15,150 --> 01:11:21,360 ואז להבין את האלמנט הנוכחי המבוסס על המדד שלך בתוך ללולאה. 1157 01:11:21,360 --> 01:11:24,750 בכל איטרציה, עבור כל אחד מהאלמנטים האלה בטבלה, 1158 01:11:24,750 --> 01:11:30,560 אני רוצה לבדוק אם הטקסט של היסוד - הטקסט של התא בתוך השורה - 1159 01:11:30,560 --> 01:11:33,130 תואם את מה שאני מחפש. 1160 01:11:33,130 --> 01:11:36,390 מחרוזת זו גדולה ארוכה של פקודות היא איך אני יכול לעשות את זה. 1161 01:11:36,390 --> 01:11:40,900 ראשית, שוב, זה מתייחס כיום ל-- כי זה בתוך פונקציה חדשה - 1162 01:11:40,900 --> 01:11:45,020 זה עכשיו השורה הנוכחית בטבלה. 1163 01:11:45,020 --> 01:11:47,340 אני רוצה לקחת את השורה הנוכחית בטבלה, 1164 01:11:47,340 --> 01:11:49,950 ואני רוצה לקבל את כל ילדיה. 1165 01:11:49,950 --> 01:11:51,940 זכור, DOM הוא עץ היררכי, 1166 01:11:51,940 --> 01:11:54,200 מה שאומר שיש אלמנטים מספר הילדים. 1167 01:11:54,200 --> 01:12:00,180 >> . פונקצית ילדים זה הולך לחזור אליי חזרה מערך של כל האלמנטים 1168 01:12:00,180 --> 01:12:03,240 שהם הילדים, במקרה זה, שורה בטבלה. 1169 01:12:03,240 --> 01:12:07,150 זה פשוט התאים הפנימיים של השורה. 1170 01:12:07,150 --> 01:12:09,230 אני רק רוצה לחפש בתא הראשון. 1171 01:12:09,230 --> 01:12:13,090 התפקיד הראשון. אומר לי שהרכיב הראשון במערך. 1172 01:12:13,090 --> 01:12:17,070 אז פונקצית הטקסט אומרת לי בדיוק מה יש בפנים של אותו התא 1173 01:12:17,070 --> 01:12:19,530 מאחר שאני רוצה לחפש שבטקסט. 1174 01:12:19,530 --> 01:12:21,040 לבסוף, בואו להמיר אותו לאותיות קטנות, 1175 01:12:21,040 --> 01:12:23,940 כדי שנוכל לעשות שאילתות רגישות מקרה טקסט. 1176 01:12:23,940 --> 01:12:29,990 לבסוף, אנו רוצים לראות אם מחרוזת שבתוך טבלה מכילה מחרוזת שאנחנו מחפשים. 1177 01:12:29,990 --> 01:12:32,980 פונקצית indexOf ב-JavaScript עושה בדיוק את זה. 1178 01:12:32,980 --> 01:12:37,060 הוא אומר לנו אם מחרוזת זו מכילה מחרוזת אחרת. 1179 01:12:37,060 --> 01:12:40,150 אם זה נכון, כי התא מכיל את מה שאני מחפש, 1180 01:12:40,150 --> 01:12:42,140 אז אני רוצה לוודא שהוא מוצג. 1181 01:12:42,140 --> 01:12:45,330 שיטת התכנית תהיה לומר, "תראה את האלמנט". 1182 01:12:45,330 --> 01:12:50,350 אם זה לא המקרה, אז זה אומר שכל מה שאני מחפש לא כלול 1183 01:12:50,350 --> 01:12:53,550 בתוך השורה, ואז אני רוצה להסתיר הוא מהמשתמש. 1184 01:12:53,550 --> 01:12:59,240 שמשיג אפקט שהסינון נחמד שבו אנחנו כבר לא רואים את השולחן כולו. 1185 01:12:59,240 --> 01:13:01,480 אם אתה מעוניין באיך לעשות טיקר זה, כמו גם, 1186 01:13:01,480 --> 01:13:04,180 אנו לכתוב את המקור באינטרנט. אבל זה ממש פשוט. 1187 01:13:04,180 --> 01:13:09,860 JQuery יש שיטות מדהימות עבור אלה אנימציות ומאפייני CSS מניפולציה. 1188 01:13:09,860 --> 01:13:11,020 אז, זהו זה בשבילי. 1189 01:13:11,020 --> 01:13:15,560 >> אז מה לפנינו? כפי שתראה בכמה ימים, הצעת פרויקטים הסופית היא תוצאה. 1190 01:13:15,560 --> 01:13:17,730 הצעת פרויקטים הסופית תשאל אותך כמה שאלות, 1191 01:13:17,730 --> 01:13:19,420 אך ביניהם יהיו שלוש אבן דרך - 1192 01:13:19,420 --> 01:13:22,840 1 אבן דרך "טובה", אחד אבן דרך טובה יותר, ואחד הטוב ביותר. 1193 01:13:22,840 --> 01:13:25,870 הרעיון הוא באמת לעזור לכם להגדיר את הציפיות שלך 1194 01:13:25,870 --> 01:13:29,160 כך שמינימאלי שיהיה מאושר עם התפוקה של פרויקט הגמר שלך 1195 01:13:29,160 --> 01:13:32,060 וזה יהיה "טוב" עד כמה שאתה מודאג. 1196 01:13:32,060 --> 01:13:34,540 אבל אז בעניין להוציא לך להגיע קצת למשהו טוב יותר 1197 01:13:34,540 --> 01:13:37,680 או משהו טוב, אנחנו גם למיין של לדחוף אותך לכיוון זה גם כן. 1198 01:13:37,680 --> 01:13:40,660 CS50 האק--טהון, בינתיים, הוא בכמה שבועות. 1199 01:13:40,660 --> 01:13:44,340 בדרך כלל, אנחנו עושים את זה על בסיס בסיס הגרלה בגלל הריבית, 1200 01:13:44,340 --> 01:13:47,680 אבל רוב סיכויים שניקח כמה מאה מאיתנו בהסעות באוטובוסים מהכיכר הרווארד 1201 01:13:47,680 --> 01:13:51,540 עד לכיכר שבי קנדל מיקרוסופט יש מתקן יפה בשם קולע "NERD" - 1202 01:13:51,540 --> 01:13:53,830 המחקר החדש באנגליה ובפיתוח המרכז. 1203 01:13:53,830 --> 01:13:56,380 אנחנו נגיע לשם בסביבות השעה 8 בערב יהיה לנו קצת אוכל. 1204 01:13:56,380 --> 01:13:58,160 סביב עד 1 תהיה לנו עוד קצת אוכל. 1205 01:13:58,160 --> 01:14:02,150 בסביבות 5 בבוקר אם אתה עדיין ער ניסע מעל לIHOP או לקחת אותך בחזרה לקמפוס. 1206 01:14:02,150 --> 01:14:04,380 האובייקטיבי יש לצלול לפרויקטי גמר 1207 01:14:04,380 --> 01:14:06,190 לצד חבריו לכיתה ואנשי צוות. 1208 01:14:06,190 --> 01:14:08,280 ואז כעבור כמה ימים הוא יריד CS50, 1209 01:14:08,280 --> 01:14:10,990 שבאמת אמור להיות הזדמנות עבורכם להציג את העבודה שלך 1210 01:14:10,990 --> 01:14:12,700 והישגים לסמסטר 1211 01:14:12,700 --> 01:14:15,610 בעוד מתחכך זה בזה ומקבל תחושה של מה שכולם עשו. 1212 01:14:15,610 --> 01:14:17,850 עם זאת אמרה, הרבה תודות לטומי וליוסף, 1213 01:14:17,850 --> 01:14:19,960 ואנו רואים אותך ביום שני. 1214 01:14:19,960 --> 01:14:24,070  [מחיאות כפות]