>> בסדר ולכן אנחנו חוזרים, כמה מטרות להיום,
אנו להרים בי שבו הפסיק בפעם האחרונה,
זוכר שהיינו מה שהופך את הרצף הזה
של יישומי שרת קשור, סופר פשוט אך באמצעות צומת JS
ולאחר מכן גם לאחרונה שימוש במגע כמפורש
ומה בא לידי ביטוי JS אנלוגי של בעולם PHP.
אז מפורש יותר ... קרוב,
כך מפורש הוא במהותו מסגרת MBC זה די
פופולרי בעולם JS הצומת,
מדף ספרים שבו אנו נראה היום באמצעות טים ​​הוא אנלוגי
של הרהוט שהוא ORM על ממפת יחסי אובייקט
כי בעצם עושה את זה קל יותר כדי להימנע מקוד SQL ברמה הנמוכה
ולמעשה מבטא את היחסים בין אובייקטים שונים.
אז אחת מהכי המגניב דברים ביושר
על JS הצומת הוא רק איך קלות הוא משאיל את עצמו
לעושה יישומים בזמן אמת, דברים כמו שרתי צ'אט
או שרתי העברת הודעות, כל דבר שאתם משתמשים כעת
כמו גוגל ... G-צ'אט או מקום מפגש גוגל
או עדכוני סטטוס בפייסבוק או אפילו טוויטר אם אתה
על כל דבר, דף האינטרנט שלהם הוא סוג של זמן אמיתי
או נותן לך את אשליה של זמן אמיתי
וזה בעצם כאב ב הצוואר לעשות עם משהו
כמו PHP ו-SQL שלי נכון מה אנו מציעים
ביום שני יהיו האמצעים
שבו אתה יכול ליישם אשליה של זמן אמת התנהגות
עם שרת צ'אט ב-PHP, מה היית צריך לעשות?
אליס שולחת הודעה, להיטים להיכנס לאן זה הולך?
כן.
>> [סעיף לא ברור]
>> לתוך בסיס נתונים ולאחר מכן מה באמת יש לדפדפן של בוב
לעשות ממש לראות מה אליס אמר, כן?
>> [סעיף לא ברור]
>> שמור תשאול בסיס נתונים, בסדר, אז בקשת ajax יש
לירות בכל שנייה, בכל כמה שניות או שדברנו בקצרה
אבל לא אסתכל על דוגמא של משהו שנקרא תשאול ארוך,
זוכר מישהו איך
מנגנון ש... על רמה גבוהה עובדת?
>> [סעיף לא ברור]
>> בדיוק, כן, כך דפדפן עדיין עושה את בקשת ajax
לשרת, לphp נקודת foo אבל php נקודת foo פשוט נראה
לתלות, זה בעצם יושב בזמן לולאה לכמה שיותר
כ30 שניות בדרך כלל ו רק פעם אחת את קובץ php נקודת foo
מבין הו יש שורה חדשה
בבסיס נתונים עושה זה בעצם להגיב
עם להגיב http.
אז אתה חושב שאולי זה אחרת לתלות את השרת
והיא עושה במידה מסוימת
אבל זה אומר שיש הרבה פחות תקורה
כי אתה לא צריך TCP חדש חיבור, חיבור htp חדש
לבקש למעשה נתונים מהשרת.
אבל JS הצומת מגיע עם מאוד ספרייה פופולרית בשם שקע
הנקודה io שבו אתה יכול מעולם לא השתמש בנוי על גבי
של טכנולוגיה המכונה אינטרנט שקע אשר נמצא
בדפדפנים והמודרניים ביותר מה שקע io עושה הוא לאפשר לך
כדי ליצור למעשה חיבור מתמיד
בין הדפדפן לבין השרת זה תקורה נמוכה מאוד
כך שאתה לא בהכרח יש אותן בעיות קנה המידה
שייתכן שאם אתה להכות את השרת כל הזמן
בעולם של PHP ו- SQL שלי וכדומה.
גם לדפדפנים ישנים יותר
שאינו תומך בשקע האינטרנט שקע נקודה זו ספריית IO יכול
ליפול על גב הבזקים יישום של ארובות
ושקעים הוא ברשת דבר מCS143 למשל.
או שזה יכול גם ליפול על הגב ארוך קלפי עצמו, כך הם ליישם
שאותו סוג של עבודה
מסביב לשמירה בפועל האשליה של הקשר הזה.
אז שקע [לא ברור] io ואת זה הוא בצורה
של ספריית ג'אווה סקריפט, למעשה, אם אתה משתמש בו
בצורה של י.ס. בצומת יישום התקנה לא רק
זה כחבילה באמצעות משהו כמו NPM שבו השתמש ביום שני
ואו שאתה כולל גם מפשיט את התג בקובץ HTML שלך
זה אומר להשתמש ספרייה בצד לקוח.
אז יש שני חצאים כדי זה ומה שעשינו כאן
באיטרציה הרביעית הרצף של יום שני
דוגמאות הוא הבא.
אז מבנה קובץ זה הוא מזכיר סט נפוץ מאוד
עד לJS והביע לשמחתי זה דרך פשוטה יותר
מ [הפונטי] lervo היה, זוכר כשאתה מגדיר
עד lervo יש לך ענק מגעיל לזרוק של המון קבצים,
ספריות ספק, lib ומאוד משקל כבד בהשוואה לזה.
עכשיו בהגינות אנחנו כבר הפשיטו משם דברים זה פחות או יותר
הסחת דעת אבל כל חומר עסיסי הוא באמת
במודולים צומת.
רק כדי לתת לך טעם אם אנחנו מסתכלים
במודולים צומת יש שני מודולים או בספריות
כי אני כבר הורדתי, זה יהיה שווה הערך
של ספריית הספק, אחד נקרא מפורש שהוא
כמו larevel אבל בצומת
ושקע io אחד רק הזכרתי.
אז אלה קיימים, כך שנוכל בצע את הפעולות הבאות אם אני פותח
עד נניח html נקודת מדד, תן המבט הראשון של בhtml,
זה הולך להלחין הגוף הזה, הסופר שלי,
שרת צ'אט סופר פשוט.
אז יש כנראה ul עם רעיון ייחודי של הודעות
וזה מקום שבי li אחד בכל פעם,
כל ההודעות המיידיות הם הולך להופיע בין אליס
ובוב ואז יש טופס פשוט עם שדה טקסט
וכפתור שליחה שבו אליס
או בוב למעשה יכול הודעה זו בזו.
אז ההשפעה נטו אם אני מפעיל יישום זה
על ידי עושה נקודת אפליקציה מרחב צומת JS, אם אני מושך את בני זוג
מחלונות דפדפן הוא כי אליס יכולה להיות בצד הימין,
בוב יכול להיות על שמאל ופשוט
שיהיה ברור שאין שום קסם כאן יש לי חלון אחד
בעילום שם כך שאין שום שיתוף של עוגיות או כל דבר
ככה, אלה הם שני משתמשים שונים.
אני צריך להיות מסוגל לקבל אליס תגיד שלום בוב, לחץ על שלחת
ועכשיו שאתה רואה בצד השמאל כי הודעתה של אליס נשלחה
וכמעט באופן מיידי בצד הימין.
אין סקרים לכאורה מעורבים, בוב קיבל את אותה ההודעה.
כעת בוב אומר אומר היי אליס אתה רואה את ההשפעה ההפוכה.
אז מה באמת קורה, איך הרבה קוד אנחנו צריכים לכתוב
כדי ליישם את זה בשרת צ'אט
שעכשיו אתה יכול להסיק מבחינה נפשית, כי כולם
בחדר הזה, אם זה לא היו על [לא הברור] שלי
אבל בנקודה com foo שכולנו יכולים התחל לשוחח בצ'אט באופן מיידי
אחד עם השני.
אז מה מעורב ולפני שאני לנקות את המסך הזה זה זה
רק שקע io להיות קצת רועש, זה פשוט דפוס
את ניפוי מידע למסך,
יש באמת דבר אחר שקורה שם.
אז תנו לי לפתוח את JS נקודת אפליקציה, כך כמו בעבר שיש לנו כמה דברים
בחלק העליון של הקובץ.
חבורה של דרישות, ולכן אלה הם כמו ספריות
או לחדד רמזים או לדרוש onces מה נפשי המודל
רוצה להיות ורק כדי לסכם FS משמש
עבור איזה סוג של פונקציונליות?
אז מערכת קבצים כך קריאת קבצים כמו פוטנציאל וכאלה ש
ואני משתמש בזה באחד מקום כפי שתראה,
מפורש של קורס היא זו מסגרת שבו אנו משתמשים,
זה בהחלט לא הכרחי שיכולנו
כמו ביום שני ליצור לחלוטין שרת HTTP שלנו מהתחלה
על ידי עושה ליצור שרת וכל מסוג זה של קוד מלפני
אבל כפי שנראה זה עושה דברים קצת יותר קל
משום שכל מה שאני צריך לעשות זה על קו 3 כאן מופע
ולהביע את האובייקט, אני אתקשר זה יישום, באופן שרירותי למדי,
אז אני אגיד לי היישום להקשיב באופן שרירותי 1337 נמל,
כי יכול להיות 80 ידי אמנה
ואז לבסוף יש לי חדש קו היום וזה אומר
לחייב את השקע ספריית io ולאחר מכן
על ידי גישת שרשרת זו היית מפעיל נקודה זו אני רק
קורא שיעור להקשיב זה בעצם אומר לי השקע
ספריית io לגם להקשיב לאותו שרת
או אינטרנט חיבורי שקע.
אז מה עכשיו, אז מה הוא עושים את זה, ארבע שורות אלה
קוד כאן שצריך נראה מזכיר larevel,
מה זה מייצג?
>> [סעיף לא ברור]
>> זה ... מסלול, רק מסלול כל כך בJS נקודת אפליקציה,
aka JS נקודת השרת בהתאם על מה שאנשים רוצים לקרוא לזה
ביישומים משלהם יש לך כנס
לעשות הגדרת המסלולים שלך,
גט נקודת אפליקציה אומר בכל פעם אתה מקבל בקשת גט ללכת
לסלאש ממש קדימה ולקרוא לפונקציה אלמונית
והפונקציה אנונימית ב מקרה זה לוקח בדרישה
או בקשה ותגובה, פוטנציאל כמה דברים אחרים
אבל מינימאלי שני אלה.
הבקשה נותנת לך גישה לדברים כמו פרמטרים http
וכותרות ואחרות דברים עסיסיים
ולאחר מכן את התגובה הוא המנגנון
שבו אתה יכול מגיב למשתמש.
אז זה פשוט סופר אפילו למרות שלא ראו די
אותו קוד הפעם האחרונה, אני באמצעות מודולים של מערכת קבצים,
ליצור שיטת זרם קריאה אשר למעשה עושה את זה,
ליצור זרם קריאה בי משמעות הדבר היא למעשה להתחיל slurping
את הבתים מנקודת המדד html בצורה יעילה ככל שאתה יכול
בלי בהכרח מחכה עד לקרוא את הקובץ כולו
וכמו שאתה עושה את זה צינור אותם, פשוטו כמשמעו,
במובן האנכי אם אתה מרגיש בנוח
עם שורת הפקודה של לינוקס,
צינור זה לתגובה של אובייקט.
אז היו שתי דוגמאות הקשורות לזרמים ביום שני,
בדקנו רק באחד, אבל אתה מוזמן להסתכל אחורה
בo זרם וזרם 1.
זרם 1 ... 0 עשו משהו דומה לזה,
זרם 1 עשה משהו כמעט בדיוק כמו זה,
זה רק חלקלק אניה אחת אומר מין
של מצמוץ משהו בפה ולאחר מכן להתחיל לשלוח אותו כאן
באותו הזמן בלי עושה מסה מסכימה
ולאחר מכן זכות מסיבית,
גישה זו היא בדרך כלל יעיל יותר.
אז זה סוג של חומר ישן גם אם זה היה חדש ביום שני,
זה כל מה שנדרש כדי ליישם שרת צ'אט
עם JS צומת ועוד שקע במיוחד מנקדים io.
אז איך זה עובד, תן לי לעבור את זה קצת,
כך io הוא רק משתנה המתייחס
לנו מודול נדרש קודם לכן,
שקע נקודה הוא רק רכוש בתוכו
זה נותן לי שקע פונקציונלי קשור
בשיטה נפוצה ה מתייחס למה שרעיון כללי?
אירוע כן הלאה aka להאזין כמה ספריות זה רק אומר
על שמיעת אירוע זה אשר נקרא חיבור
ועכשיו אתה יודע את זה רק מ מסתכל על התיעוד,
מי שכתב את הספרייה הוגדר אירוע בשם
חיבור שעושה מה שלך היית חושב
כאשר אליס או בוב מתחבר.
קדימה, קורא לזה פטירתו לקחת פונקציה אנונימית
בטיעון אחד הלקוח שהוא, ככל הנראה, מסוג כלשהו
של אובייקט שמייצג החיבור של אליס
או החיבור או של בוב צ'רלי או אף אחד אחר
ועכשיו אנחנו עושים את הדברים הבאים.
אנחנו אומרים ללקוח לאחר הוא או היא מחוברת
להקשיב באופן ספציפי
להודעה זו לחלוטין באופן שרירותי שנקרא הודעה
לקוח מעי גס.
זה משהו שטים ו אני בא עם, זה יכול להיות foo
או בבר, זה רק חלק מחרוזת ייחודית שאנחנו צריכים
להחליט על כ המפתחים.
בכל פעם שאליס או בוב שומעת
אירוע שזה בעילום שם פונקציה צריכה להיקרא
ונתונים, תוכן של אליס
או ההודעה של בוב צריכה להיות עבר למטפל אירוע זה
ועכשיו מה שצריך לקוח עושה טוב שאתה סוג שהוא יכול
מלקרוא את זה באופן אינטואיטיבי למדי הלקוח צריך לשדר,
הידוע גם לפלוט שרת שיטת הודעה שנקראה
ובכך מסמל את המסר הזה מגיע מהשרת לא
מהדפדפן ומה הייתי שהמסר יהיה,
זה, ככל הנראה, המטען מ כל מה שהגיע מהלקוחות
ואנחנו רק הולכים באופן שרירותי לקרוא לזה מסר.
אז הרבה זה הוא שרירותי
באמצעות מתן שמות סבירים כנסים, טים ואני באים
עם, בעיקר טים ואז פשוט יוצרים סופו של דבר
צ'אט שרת שעושה מה, כאשר אליס שולחת הודעה
ולהיטים להיכנס איזה אירוע ככל הנראה מקבל ירה,
רק כדי לסכם.
סוגי אליס הודעה, להיטים להיכנס, לקוח מסר הוא ירה,
קוד זה שומע את זה ועכשיו השרת משדר מה,
מה התוצאה הסופית זה באמת?
אליס שולחת את הודעת החברה השרת משדר אותו
ביעילות לכולם חוץ לאליס, למה כולם מלבד
לאליס, אם אתה רק מסתכל
בבית הלקוח התיעוד נקודת שידור הנקודה להודות,
ממש עושה את זה, משדר את המסר
לכולם חוץ לקוח ששלח לך
שההודעה האחרונה.
אז זו הסיבה שאתה רק רואה את זה פעם אחת בכל צד,
אתה לא רואה את שניהם אליס ו בוב מקבל את הודעתה של אליס.
אז זהו זה, זה הוא סוכן ממסר
אם כי זה פשוט לוקח בהודעות
וrebroadcasting אותם
וזה ראוי לציון להרחבה אני מתכוון אפילו
עם סופר פשוט שרת וכמה שורות
קוד אתה בהחלט יכול מטפל במאה אם ​​לא אלפים
של מסרים פשוטים במקביל הולך קדימה ואחורה כמו זה
ורק לדמיין את המורכבות עכשיו לעשות זאת בPHD
או Larevel או SQL ושלי כמה קוד היה לך
לכתוב כדי למעשה להשיג את זה.
עכשיו בהגינות זה לא נכון מתמשך
אם השרת יורד אנחנו מאבדים את כל ההיסטוריה
כך שזה לא ממש תרגום מושלם אבל זה
כי ישר קדימה.
בואו נסתכל על תסריט ג'אווה קוד שאנו פוסחים על קודם לכן,
זה של אליס ו לקוח של בוב,
דף האינטרנט בו הם משתמשים כעת בואו נסתכל לכאן לרגע.
יש קוד קצת יותר
אבל זה פחות או יותר פשוט jQuery כאן אז הודעה
כי בדף האינטרנט שמשכתי
עד לפני רגע שאנו כולל את ספריית jQuery,
שקע io ספרייה וכמו בצד יבחין בהבדל
כאן, לקצץ בלוכסן תחילתה של דרך
כמו שזה אומר מה בדיוק,
שבו היא נקודת jQuery JS על מה שרת?
כן.
>> [סעיף לא ברור]
>> זה באינטרנט, כן נקודת קוד, פשוטו כמשמעו, שנקראה jQuery
dot com אז למה לקצץ, לקצץ, למה לא פשוט קו נטוי אחד,
שבו הוא http או המעי הגס, מה זה אומר בכלל
אם אתה לקצץ לוכסן ב תחילת הכתובת?
זה באמת שימושי.
אוקיי אז מה שברור חסר http עכשיו אם אנחנו סיבה
תעבור את זה באופן הגיוני, בדרך כלל אתה לא צריך
להזכיר שרתי שמות תקין
כמו אם פשוט להשתמש לוכסן נקודת jQuery JS מה הנחה הוא
על ידי הדפדפן?
כי הקובץ הוא באותו שרת כך תמשיך סוג זה
של היגיון, אם אתה לא אומר לי זה מה פרוטוקול מה
דפדפן להניח, אותו פרוטוקול כל כך אם אי פעם ביקרו באתרים
זה נותן לך שגיאה לאורך השורות של תוכן לא בטוח
בדף זה שזה בגלל מישהו קשיח מוצפן http
כתובת אתר של קו נטוי נטוי מעי גס עבור תמונה או קובץ ג'אווה סקריפט
או קובץ CSS, משהו כזה בקוד המקור של הדף
אבל הדף עצמו ב כתובת אתר של דפדפנים הוא http s.
אז זה פשוט דרך מעט מהודרת
להגיד אני לא יודע מה הפרוטוקול הוא
שמשתמשי קצה אלה הולך להשתמש
אבל פשוט לעשות את זה בטוח התאמות, כך שכרום
ודפדפנים אחרים לא צועק על המשתמש.
המלכוד היחיד הוא אנשי jQuery היה להגדיר טוב יותר
https על השרת שלהם.
אז הם בעצם רישום על 443.
בסדר בינתיים זה כאן זה הוא סוג
של קו נטוי מטעה io השקע עולה
שיש ספרייה בשם io נקודת שקע בשרת שלי
אבל אין אם נתקע
מסביב יש הספרייה של מודול הצומת
אבל אין שום דבר ציבור בעניין הזה,
כאשר אנו מוגדרים io שקע להקשיב באותו יציאות,
1337 למעשה כי ספרייה שמישהו אחר כתב הוא הולך
להכניס קצת קוד מיון של בסביבתו של י.ס. בצומת
ורק להקשיב לנתיב זה.
יש ספרייה שרק מוגדר מסלול לכך,
זה לא מדריך אמיתי.
זה יהיה ב מיקום סטנדרטי.
אוקיי אז עכשיו מעניין חלק,
ולכן כאשר המסמך הוא מוכן, כמצוין
על ידי jQuery זה לבנות, ראשון אני הולך קדימה
ולהתחבר לשקע,
מה שקע רק על ידי ... לשמור את זה פשוט אני הולך להתחבר
לקצץ, זה שבו המשתמש הוא,
אני שמרתי פשוט הדוגמא אנחנו פשוט הולכים להתחבר
לאת הכתובת המדויקת ש משתמש ביקר אז אני הולך
כדי לבצע את הפעולות הבאות, אני הולך לספר הדפדפן שלה של אליס או בוב
להקשיב ל הודעה מהשרת.
שוב זה היה יכול להיות foo
או בר כל פעם שאתה לשמוע את הודעה
מהנתונים שהוא שרת שיחות ואז לעשות את קוד jQuery זה
שאני מנחש שרוב אם לא כולם מכירים
בימים אלה, אבל בעצם סיכה לרשימת פריט
לUL הקיים בי נקרא הודעות
שאומר, פשוטו כמשמעו, כל מה שהמטען הוא
של ההודעה בצ'אט ואחריו מקף, ואחריו תקבל,
אחריו רווח ולאחר מכן זמן ועדכון זה למה
שיהיה ברור אם נחזור
לזה אתה מקבל נוסף אלה כדורים שוב ושוב
ושוב עם זמנים היום.
בינתיים אם נסתכל כאן אנחנו רק צריכים
כדי להתמודד עם הגשת הטופס כך שהיה המקבל
של הודעות מיידיות, הנה שליחה וזה סוג
של שאינו קשור לJS צומת, להקשיב לצורות להגיש את האירוע.
כשזה קורה למנוע ברירת מחדל, זה רק אומר אל תפרסם אותה
לשרת ברגיל אגב, לטעון מחדש את הדף כולו,
אנחנו רוצים לעשות את זה כל דרך ajax.
הנה רק כמה קודי jQuery
למעשה כדי לקבל את הקלט סוגיו הוא מסר,
ששמו הודעה קדימה
ולקבל את ערכתי אז אתה הולך קדימה
ואם אתה באמת צריך הודעה, אם אליס ובוב
או בוב למעשה סוגים מסוימים אף אחד 0 הקשות מספר לפלוט
על שקע הודעה שנקראה לקוח הודעה עם מטען ש
ולאחר מכן כאן למטה זה מה שעושה אותו ירוק בניגוד
לאדום, אנחנו פשוט פלט צד מכשיר [לא ברור].
אז ככה זה אבל כל זה פשוט להגדיר,
הדברים חדשים האמיתיים הייתי טוען הוא רק שלושה אלה
או חמש שורות של קוד כאן ו זה סוג של רמזים בכח
של י.ס. בצומת ועם זה ספרייה המסוימת הזה.
אז בואו לקחת מהיר מסתכל JS נקודה המפורש,
אז מה אני הולך לנסות לעשות בזוג שנותר
דקות כאן הוא להגדיר כמה רעיון, כמה טכניקות
אז שתיקח כמה הפסקת דקות, טים יקימו
ואז לצלול עמוק יותר
למעניין יותר להביע את היישום וגם
למדף ספרים, הספרייה טים למעשה כתבו
לקהילת הקוד הפתוח
שנותן לנו אור רהוט פונקציונלי עם SQL שלי
ועסקות וכאלה אחרים תכונות והוא יהיה גם לצלול
בקצת יותר לעומק כדי תסריט עצמו בשפה Java,
איך האובייקט שלה או שאינה בכיתה מודל עובד יודע אחר
כמודל אב טיפוס, עוד קצת על זה שיבוא.
אז בואו נסתכל על שתי אחרון יישומים כאן, שרת חמישה
ושרת 6 אשר כל סוג של דומה ברוח,
אלה לא לשוחח שרתים אבל הם משתמשים מפורשים.
אז בואו נסתכל מה זה בעצם עושה,
אני הולך קדימה פתוח ... אני הולך להפעיל את היישום הזה
עם JS האפליקציה צומת, אני הולך לחזור לדפדפן שלי וטען מחדש
וזאת, ככל הנראה כל שרת זה עושה,
זה שרת פשוט סופר זה כנראה חיפוש
מנוע כך שאם אני מקליד בfoo ולהגיש, אין תוצאות חיפוש
לfoo, אני לא בסביבה כדי לקבל יישום המתוחכם
קצה אחורי, כל זה הולך
לעשות הוא הד לא משנה מה אתה מקליד אין תוצאות לfoo,
אין תוצאות לברות אז איך אנחנו עושים את זה
בגלל שיש כמה חתיכות, אחד,
יש בבירור כמה תשומות הניתנות
לשרת לא Larevel כמובן, אבל JS צומת עכשיו
כך שאנחנו צריכים איכשהו לקבל באותו Q הפרמטר,
ברור לנו שאתה עושה איזה מבט כאן,
אנחנו הופך את תצוגה כך אולי יש הזדמנות
לתבניות או משתנה interprelation [הפונטי]
אז בואו נסתכל בדברים הבאים.
בJS אפליקציה בשביל זה בפרט השרת הזה הוא כל מה שיש לנו.
אחד אנו דורשים להביע עצמו, שני מודול הנתיב
שפשוט עושה כמה דברים שימושיים
כמו הצטרפות מחרוזות יחד וכן הלאה בשבילי,
אני מקשיב ביציאה 1337 ו עכשיו זה חדש אז זה הופך
אאוט מהיר שכמו Larevel תומך ins תקע שונה
וטכנולוגיות דברים ואחד אחרים
של הטכנולוגיות שאתה יכול לחבר הוא מנוע תצוגה
שרק אומר את מה שבניית תבנית מנוע אתה רוצה להשתמש בו,
היה לי Larevel זה לבד דבר אבל אתה יכול לחבר
בדברים שונים, שונה יש מסגרות P אפרסק
דרכים שונות של בניית תבנית, EJS הוא רק נפוץ
ומנוע די פשוט כי רק בואו אתה עושה דברים
כמו הסוגריים המסולסלים כי היה לך בתחביר Larevels
להחלפת משתנים,
זה קצת שונה מבחינה תחבירית, זה הכל.
אז עכשיו יש את הדבר הזה שנקרא כלי אמצעי כל כך כמו שאתה תראה
בצוותים הצומת משלך פרויקט כלי אמצעי הוא פשוט סוג של קוד
או ספריות שאתה מזריק
ל[ לא ברור] התגובה מחזור חיים של יישום,
במילים אחרות שני אלה קווים אומרים מפורשים
כדי לעשות קצת עבודה נוספת בין הזמן שהיא מקבלת בקשה
ובין הזמן שהיא שולחת בקשה שלמסלול שלך,
הקוד שלך, כי אתה כבר נכתב.
אז בפרט הקו הזה כאן להשתמש בנקודה מפורשת סטטי וכל
המורכבות הזאת זה פשוט משמעות הוא שאם אתה רואה את בקשה
שמגיע לקובץ סטטי כמו Jif נקודת foo או css נקודת foo
או נקודת foo JS ולכן לא מסלול באופן דינמי,
קדימה, מניח שהוא חי בתיקייה הציבורית,
זה כל מה שהוא עושה.
זה כמו סוג של מיפוי ב Larevel, הכל לאינטרנט שלך
או בספרייה הציבורית שלך ולא בLarevel.
קו זה הבא הוא פשוט אומר שאני רוצה להשתמש במסלולים,
אני רוצה להשתמש בדברים כמו אפליקציה מנקדים לקבל
שראינו לפני רגע ו אנחנו אראה רק שני עכשיו.
נקודה אז אפליקציה מקבלת אמצעים להקשיב למסלול הזה,
סלאש כאשר אתה מקבל את זה קורא לזה פונקציה אנונימית שלוקחת
בבקשה ו תגובה ועכשיו רק
כמו Larevel יש לך דרך של עיבוד תבנית,
תגובה מנקדות לדקלם, לצטט את מדד סוף ציטוט,
להבהיר היא תבנית נקרא מדד,
זהו זה אז בוא להשעות כי חוט רק למראה רגע
בתוכן ספריית הנוף
ושים לב זה יותר סופר פשוט לעת עתה,
יש EJS נקודת המדד ולחפש EJS נקודה,
אני כמובן רוצה את הראשון
כי זה אחד אני פשוט עייף כדי להבהיר ונראה
בEJS נקודת מדד צפיות רוב בעצם html לחלוטין
באותו הרגע, שיש למעשה אין בניית תבנית קורה.
אז עשיתי מבחינה טכנית לא צריך אפילו לקרוא לזה EJS,
אני לא צריך את הפונקציונליות ה אבל שמרתי את זה אחיד,
אז זהו זה, זה מה נותן לי טופס שסופר פשוט.
אז יש רק מסלול אחד אחר, אם נסתכל כאן למטה שאמרתי
שזה מה שמטפל מקבל סלאש חיפוש, כך הסוג בפועל
של גוגל כמו מטפל עבור טופס הגשה, כאשר אתה מקבל
נתיב שקורא לזה פונקציה אנונימית
ולהפוך את התבנית בשם חיפוש
ומה הוא השני ויכוח ככל הנראה מתכוון.
זה נראה כמו אובייקט json של מיני או אובייקט ג'אווה סקריפט.
מה תפקידו של ש טיעון שני ככל הנראה?
>> [סעיף לא ברור]
>> השאילתה בפועל משתמש הקליד במתגורר ככל הנראה
בשאילתת נקודת בקשה, שאילתה מתייחס לכל דבר
אחרי נקודת סימן השאלה q שהוא שם השרירותי
שנתתי לו בדיוק כמו גוגל
ובינתיים מעי גס q הוא רק אומר לעבור לתוך התבנית,
EJS נקודת חיפוש מפתח של q וערך
של כל מה ש של בפועל הערך היה.
אז זה משאיר רק אחד קובץ של עניין לתצוגות,
EJS נקודת החיפוש המשכתי זה סופר פשוט מדי,
זה בעיקר html חוץ לשורה אחת יוצאת דופן במקצת
שהוא תחביר זה כאן שנראה כמו חבורה
של בניית תבנית שונה המנועים זה רק אומר שתקע
בערכו של q ולעשות את זה מודגש.
אז אין חיפוש אמיתי פונקציונלי אבל זה סוג
של מציע איך היית מבנה שלד
של יישום כזה.
בינתיים ... בעצם אני עשוי להראות דבר אחד אחר,
שם לב שיש לי כמה html עד כאן לקבצי CSS
וקבצי ג'אווה סקריפט, אין שום דבר בקבצים אלה
ברגע שלא להבחין כי יש ספרייה ציבורית
כפי שאמרתי קודם לכן עבור קבצים סטטיים כך שאם אני הולך
שם יש מדריך CSS שלי,
אם אני נכנסתי לשם יש סגנונות מנקדים css
ואין שום תוכן שיש
אבל ככה שהיית יש קבצים נגישים לציבור.
בסדר בואו נסתכל בגרסה אחת אחרת כאן
ולאחר מכן אנחנו מציגים רעיון אחד והפסקה.
אז זה השרת 6 שעבר, ולכן זה כמעט זהה מלבד
עבור שתי שורות התחתונה שייראה כך.
אז בעצם יש שורה שלישית זה שונה
אבל אני כבר נסתר ... אז תן לי גב עד מעט כל כך מישהו רוצה
להציע מה קורה כאן במונחים של ההדיוט
או במונחים טכניים מה שונה לגבי גרסה זו
ביחס לאלה קווים בצומת העליונים.
מה יש לי מן הסתם נעשה כאן ולמה?
כן, שרון.
>> [סעיף לא ברור]
>> כן זה נראה כמו לי אינדקס וחיפוש עבר
כל כך ישיר, נפרד או משהו, אני כבר בחשבון אותם
וזה כל כך כל כך הרבה כמו בLarevel אתה יכול לשים את כל
היגיון הבקר שלך בתוך מסלולים מנקדים php
עם פונקציות בעילום שם שוב ושוב ושוב
אבל קובץ שכמובן יכול לקבל די מאסיבי
כך במסלולים מנקדים PHP מה שרוב
מכם כבר עושה הוא שציינת את שמו
של כיתה או בקר אפילו את השם של שיטה
שצריך לקבל בשם
אז אותו הרעיון כאן אפילו למרות שהתחביר הוא קצת
שונה כל כך עד כאן הודעה
שיש לי, ככל הנראה, יושם JS הצומת שלי
מודול ומודול הוא פשוט קובץ ג 'אווה סקריפט ששומר
למהות כינוס אחד שנראה ברגע.
אז תניח שכל משלי פונקציונלי למדד
ולחיפוש יש כנראה היה להכניס בספרייה זו
ועכשיו אני מתקשר כל כך מודול או חבילה או בספרייה,
מה שאתה רוצה לחשוב על זה כעל,
כמסלולים משתנים קרא מסלולים.
אז, ככל הנראה, במסלולים יש מדד הנקודה הוא שיטה הנקראת
המדד, וככל הנראה יש שיטה אחרת, המכונה חיפוש
במודולים מסלולים זו או בספרייה
ואני רק ניתובו פשוט כל כך שאני לא לשים את כל
הקוד אנונימי שלי בתוך קובץ האפליקציה שלי.
אז בואו נלך למסלולים יבחינו יש JS נקודה בדיוק מדד
ואם אני מסתכל בכאן זה האמנה התכוונתי קודם לכן
אז זה די שרירותי אבל זה כנס הצומת.
בכל פעם שאתה מיישם ספריית הצומת שלך JS,
aka מודול למעשה אתה יכול לכתוב כל קוד ג'אווה סקריפט שאתה
רוצה בקובץ זה, זה יהיה להיות בקופסא חול נקי מאוד
כך שכל משתנים שאתה לבחור לא מתנגשים
עם הספרייה של מישהו אחר, משתנים או שיטות או כל דבר
ככה, אבל כל דבר אתה רוצה לחשוף
לעולם החיצון עלא שיטה ציבורית בג'אווה סקריפט
או PHP או בשפות אחרות אתה צריך פלופ בתוך
של אובייקט גלובלי ה מחבר של צומת נקראת יצוא.
אז על ידי ביצוע יצוא מנקדים מדד אני חושף למשתמשים
במודול זה בשיטה המכונות מדד הממפה לפונקציה זו
כך שזה בעילום שם על בצד ימין
אבל אני למעשה נותן לו שם בצד שמאל
והיצוא לעולם
כך שאתה יכול לקרוא מדד נקודה או חיפוש נקודה.
אז כדי שיהיה ברור, אם היה לי גם משהו כמו foo הפונקציה
בכאן שעשה משהו
פונקציה שהיית להיות מבצעי לחלוטין,
זה יכול להיקרא ב קובץ זה אבל אף אחד לא
בעולם שבחוץ קר אי פעם קוראים foo
כי זה לא יוצאו בדרך של סימון נקודה זו.
אז זה כל מה שקורה,
הכל יפה שם מרווחים בשבילך.
אז תוצאה הסופית אם אני עושה את הצומת של אפליקציה ולטעון מחדש את הדף הוא
כי אם עכשיו אני מחפש
לבר ... מבחינה תפקודית יישומים אלה הם אותם
אבל זה רק סוג של צעד לקראת יישום נקי יותר,
בוודאי כאשר אתה מתחיל כותב יותר ויותר קוד
וזה כל אלה.
ברור שלא במיוחד מתוחכם או מורכב
אבל בעצם נקודת התחלה
על מה שיהיה שלך האפליקציה JS צומת ראשונה.
מה שנעשינו מאוחר יותר סביר השבוע בסוף השבוע הזה או
כמו שאתה מסיים על יישומי PHP שנעקוב
עם די פשוט בקשה לצוות לצלול
לדומה ברוחו ל תרגיל חימום עבור PHP
המבוסס על סקר סמסטר באמצע,
אנשים לא ימצאו מועילים עובר את התרגיל
לעשות משהו פשוט למדי
אבל מודרך למדי לפני שאתה למעשה להתמודד עם משהו יותר
בעצמך כדי שיהיו מעקב עם כי
ובעצם יהיה בשל שבוע וחצי
מעתה וחופף במקצת עם PHP במכוון.
כל שאלות ולאחר מכן על להביע, בio השקע
או בלבול שנותר מיום השנייה אולי.
בסדר, כך אני מקווה אחד לקחת-A-דרכים עד כה הוא
שיש לחלק מהם דברים בהחלט הרבה פחות
תקורה מאשר שיהיה לך כבר בעבר.
אז הרשה לי להציג הרעיון האחרון,
כל כך נפוץ מאוד הפרדיגמה תיכנות
בג'אווה סקריפט זה למעשה קיים בjQuery
בגרסאות האחרונות כך שאולי יש לי ראה בטכניקה זו למעשה
בעבר, אבל זה די גם נפוץ בעולם JS הצומת,
זה נפוץ בטים מדף הספרים של ספרייה
כך תהיה לנו לבקר שוב זה ב דוגמא מוחשית יותר
ברגע הוא פתרון קוד כזה,
זה הוא נציג של קוד ראינו ביום שני, כדי לקרוא קובץ
בהקשר זה הוא לא אמיתי שיטה זו דומה ברוח
לFS לקרוא קובץ נקודה אבל מניחים שזה רק חלק עשה
שיטה עד שעושה משהו דומה מאוד.
אז נתקלנו בכמה סוגיות ביום שני באופן כללי
אז מה הוא סוג של ... מדוע זה מדרון חלקלק,
הפרדיגמה קוראת את זה בחזרה של תיכנות-Java script
ועל ידי להתקשר בחזרה הפרדיגמה אני רק אומר שטכניקה זו
שבו אתה לא חוזר ערכים באופן מיידי
בגלל כוח ש לחסום את השרת
מלעשות משהו אחר זה שימושי, אתה במקום להתקשר בחזרה
כמו הזמזמים בShake שאק כשאתה מוכן
לעבור בחזרה תגובה כטיעון.
זהו מדרון חלקלק
שבו במהירות מאוד הופך להיות מעצבן למה?
כן.
>> [סעיף לא ברור]
>> כן, הוא הופך להיות מינימאלי סוג של זכות בלתי קריאה
אם יש לך את כל שיחה אלה גב ואם אתם דבקים
לסגנון טוב זה מתחיל די מסיבי מסוכסך
לאורך זמן ומקרה אני מציין זאת דוגמא, אם אתה סוג של הרפרף
דרכו הוא פשוט נועד לפתוח קובץ JSON ולהדפיס אותו,
כמו שזה זה, ובכל זאת אנחנו יש לי כמה 8 או 10 קווים כאן
שהם כבר סוג של מסוכסך ברשעות,
יש לנו לתפוס ניסיון שהוא
אם אתה לא מכיר הוא טכניקת טיפול בשגיאות
זה מאפשר לך לנסות משהו
ואם זה לא מצליח אז אתה תופס את זה בתקווה
ללא כל התכנית שלך הפסקה אבל יש
כל כך הרבה מורכבות כמוך סוג מצריך לחשוב זה באמצעות
והחס וחליל שאנחנו עושים כמה שיטת אסינכרוני אחרת קוראת,
העניין הוא שכבר הולך להיות כאן,
אולי אתה חושב שזה סוג של אסתטי טיפשי אבל זה
בגלל השיחה בחזרה הפרדיגמה היא כל כך נפוצה לפחות
בקוד צומת ילידים זה הפך מהר מאוד משעמם,
קשה לאתר באגים, הכניסה מתחיל משנה כל כך אתה יכול למיין
דברים מרדף למטה, זה פשוט לא דרך מאוד שמחה
של תיכנות.
אז מה אנשים עושים
בצומת הקשר שונות בקרב שלהם הוא מנסה לפשט את זה,
מערכת הפעלה להבטחות למשל דרך אחרת של חשיבה
על כתיבת קוד אסינכרוני כי מבחינה ויזואלית הופך משהו
כמו הגרסה 1 לתוך גרסה זו 2.
אני טוען וזה שוב רק סוג של מעורב
בין קוד ופסאודו בפועל קוד, זה נציג
של איך היית מחדש ליישם בדיוק אותו דבר,
לפתוח קובץ JSON, לנתח אותו ולהדפיס אותו
את משתמש במשהו בשם הבטחות
והפרט התחבירי המפתח הוא
שיש שרשור קורה כאן.
שימו לב שרק פסיק
בכל ... בעצם גם בואו ... אני לא רוצה להטעות.
זה לא הכרחי אבל בואו נהיה עקבי,
תבחין כי פסיק המתייחס לפתיחה
של כל הצהרה זו הוא את כל הדרך לכאן.
אז בזמן שאני כבר מעוצב זו ... סוג של נראה
כמו שלוש הצהרות, שלוש הצהרות שאתה עשוי לראות
ב-Java או בשפות אחרות כי יש לנסות ולתפוס
וטיפול בחריגים באופן כללי יותר.
שימו לב שאני רק שרשרת ערך ההחזרה של כל
אחת מהשיטות הללו ביחד.
אז מה קורה, קרא את הקובץ אם זו שיטה שקיימת,
מנסה, ככל הנראה, כדי לקרוא את הקובץ הזה,
נקודה אז כך אז היא מאוד שם נפוץ נתון בעולם
הבטחות ל שיטה שבה צריך לבצע
אם הדבר הקודם הצליח.
אז זה כמו סוג של ההצלחה מטפל, לנתח נקודה כן אז JSON,
גם לנתח נקודת json רק שיטה
בספריית json הגלובלית והיא שומרת, ככל הנראה,
במקרה זה מודל הבטחה
כך אנו אומרים רק שאנחנו יכולים מניח שיחה שהבחור הזה
ואם הוא מצליח אז קורא את הבחור הזה ולאחר מכן
אם זה בעצם עוסק בביצוע פשוט לנחם את יומן נתונים
בשאלה.
אז איפה היא השגיאה טיפול, שים לב שהסוג
של צעד מאוד בעיוורון את המדף הזה
ורק בשם זה שיטה ולאחר מכן בשיטה זו
מבלי לבדוק לבעיות.
ובכן איפה בעיה אלה טיפל ככל הנראה ... באלה
הצהרות מטמון כל כך שונה ספריות להשתמש שונות
מוסכמות אך ב מקרה זה ואז הוא סוג
של מטפל הצלחה, המטמון הוא סוג של מטפל השגיאה
וכי אנחנו לא כבר נשברו שרשרת זו אנחנו רק להמשיך להשתמש
סימון נקודת קישור בין פריטים העלאת השיטה המקורית
של קובץ לקריאה והתפקוד קריאה כל שגיאות מסוג
של בועה בדרכם דרך השרשרת
עד שהם טיפלו בפועל שזו דרך נקיה יותר מנסה
כדי להתמודד עם זה בכל צעד ארור של הדרך
כך שהקוד שלך מאוד הופכים במהירות נתונים לא מציאותיים.
במקרה זה אנחנו טענה שאנו מנסים
כדי לתפוס את מה שנקרא שגיאת תחביר זה בעצם
תת מחלקה של כללי יותר שגיאות ואם זה יקרה תביעה
שזה JSON לא חוקי אחר אם זה שגיאה כללית יותר
שאנחנו לא ציפינו רק באופן כללי יותר לומר לא יכול
לקרוא את הקובץ.
עכשיו זה בדיוק התכוון להיות קוד נציג
אבל אם אתה כבר מתוכנת ב תסריט הגלם Java או ב-Java
או בשפות אחרות זה קוד פרוצדורלי במהותו,
מדובר במסורת יותר תנסה לתפוס שמירה
וזה אסתטי ו הפונקציונליות שמבטיח
או מנסה לתת לך שבו אתה יכול לחשוב על זה
כפשוט כותב לנסות ולאחר מכן לתפוס ואז לתפוס שלא
לדאוג בכל נקודה אפשרית יחידה
שבו שגיאה עלולה להתמודד עם ... לקרות,
אתה יכול להתמודד עם כל זה ב בסופו בהתאם לצורך של בלוק קטן
של קוד, ואתה יכול אפילו להבחין בין שגיאות
כפי שאתה יכול במקרה הזה כאן.
אז המינוח שאתה רואה בספרות אולי
כטים מציג כמה מהחומר הזה גם הוא
כי באופן אידיאלי אתה רוצה מבטיח לפתור
ופתרון אמצעי הבטחה כי סוף סוף לחזור כביכול
אבל לא בדרך מסורתית של ערך, כך שזה גם מצליח
לנכשל במהות.
בסדר כל שאלות אז, זה לא אמור להיות מספיק
לחשיפה להבטחות אבל רק מודל המנטלי
לקוד לך יתחיל לראות.