>> אז, עם מה שנאמר,
רק סוג של פשוט מבוא לאב טיפוס
ומודל האובייקטים ב-JavaScript.
אנחנו לא הולכים למשמרת הילוכים קצת לדבר
על יותר JavaScript על שרת והספרייה מדף הספרים
וחיבור ספריית Knex.
אז, אתה יכול למעשה רק -
אם אתה מחפש את Bookshelf.js זה צריך להיות די קל
למצוא, צריך להיות ראשון תוצאה מכך, וארון ספרים
כמו דוד שהוזכר רק נותן הרבה מבנה
סביב אובייקטי JavaScript ו לעבוד איתם בצורה יחסית
במסדי נתונים יחסיים.
אז, הרבה תכונות דומות שבעצם השראה בכבדות
על ידי ORM של Laravel כמו גם Backbone.js,
שהוא קצה קדמי MVC ספרייה המאפשרת לך
לבנות את הקוד שלך, דומה למה שאני מראה
עם דוגמאות של אב טיפוס שבו אתה יכול -
ולא רק באופן שרירותי לזרוק כיתות
על הדעות שלך פה ושם.
זה נותן לך דגמים ו אוספים של דגמים אלה
אשר אמורים לשמש סוג של נקודת אמת אחת
על הנתונים עבור היישום שלך.
ואז אתה מקשיב, כמו אלה שינויים בדגמים, אתה אומר, בסדר,
לעבד מחדש בתבנית זו כאן ואת זה לכאן
ולא רק להוסיף בכיתה כאן, להוסיף בכיתה שם וסוג של לקחת
על בוררים ולעשות קורי עכביש של קוד jQuery.
זה נותן יותר מעמדי מבנה ליצירות בודדות,
אבל מרכיב חשוב של ספרייה שהיא המודלים
שיש להם מבנה דומה למה שמודלים מדף הספרים לעשות.
לכן, אם אתה מכיר מדף ספרים אתה די גם
די מכיר Backbone.js מודלים,
ואני ממליץ לקיחת מבט זה.
לכן, חלק מהתכונות העיקריות
כי זה נותן לך הוא רק יכולת להגדיר נתונים על אובייקט
להתקשר להביא, אשר חוזר שיא בודד
מבסיס הנתונים, ליצור יחסים דומים לזו
למה שאתה עסק בתוך בLaravel
שבו אתה יכול לומר מטופל להגדיר שיטת שיא
ואומרים את זה זכה בשיא
שבו המטרה היא השיא רשומות בריאות שם טבלה.
בואו נראה.
יש לו הרבה - הוא שייך ל--
רק דברים שאתה די דומה -
די מכיר כבר, אבל ב-JavaScript.
ומתחת למכסת המנוע, לארון ספרים,
היא משתמשת בונה שאילתה קרא Knex.js.
אז, זה Knex, knexjs.org.
זו התייחסות לצעצוע אם כל מי שאי פעם שיחק עם זה.
אבל זה מאפשר לך - ב צורה דומה, לjQuery,
אתה פשוט סוג של יצירה שרשרת של שיטות שונות
שאתה קורא עליך שורת מסד הנתונים, כך שאתה יכול -
אתה התחלת באומרו Knex ואת שם הטבלה.
כך, למשל, משתמשי Knex, לבחור את העמודות שתרצה,
שבו, ויש לי בו שונה תניות ואתה יכול לקבל
ואיפה, או איפה, שבו בין, שבו לא,
לך עכשיו, לאורך הקו.
ניתן לציין שונה מצטרף בין טבלאות מסד הנתונים שלך
מדף הספרים שמשתמשים באופן פנימי כדי להגדיר את הסוג של קסם
סביב hasOne, hasMany, belongsTo, belongsToMany.
וכן שילוב
של שני ינתנו לך לעשות די יותר מה שהיית לשמש
במסגרת כמו Laravel במונחים
פונקציונליות עבודה עם מסדי נתונים.
אז, בואו נלך קדימה ולקחת תסתכל על דוגמא פשוטה
לאפליקצית Express ה עושה שימוש במודלים אלה
ואוספים של ג'אז מדף הספרים [הפונטי].
אז, אני כבר להגדיר רק יישום פשוט כאן.
אני חשוף החוצה חלק מהדברים שאתחול מפורש
ולהעביר את זה לinit ספרייה שאני יצרתי.
אחד הדברים נחמדים על עובד עם אקספרס כאמור
לLaravel הוא שיש ממש לא הרבה נאכף
עליך קונבנציונלי ש.
אז אתה יכול ליצור ספריות -
זה לא ממש נותן לך הרבה לעבוד מעל.
יש לך רק סוג של כמה הגדרות בסיסיות ולאחר מכן -
אבל לא אכפת לו איפה אתה שם אותם.
אתה לא צריך שתהיה לי הספרייה של הבקר.
אתה לא צריך להיות מודלים ספרייה, ספריית config.
סוג של באפשרותך ליצור אלה בהתאם לצרכי הפרויקט שלך
ולהגדיר את דברים בדרך זה הגיוני ביותר עבורך.
אז במקום שיש את כל מוכן מראש מפורש זו
בapp.js העיקרי אני רק אמרתי שווים אפליקציה דורשים init / מפורשים.
וכך בinit,
תיקיית האתחול אני פשוט הבע כאן,
וזה דורש Express, שיחות הגדרת התפקיד, קורא -
מגדיר את מנוע התצוגה, מנתח JSON, כל זה.
אז עכשיו, בואו נמשיך למטה.
אז אני דורש פגישת מדריכה בקורס
ודרישות דגמים.
אז אלה הם באותה תיקייה אני פשוט החלטתי שם דגמים.
זה לא חייב להיות כך דרך אולם זה הגיוני,
אבל מודלים הוא רק יפה נפוץ כל כך הייתי ממליץ על זה.
אבל - אז בואו נלך לקורס.
אני חושב שאני משתמש - כן, והדוגמות
כאן מבוססים בכל סביב המודל כמובן.
אז בואו רק לקחת להסתכל על זה.
אז, עכשיו, בדיוק של השורה הראשונה של מודל זה,
אני כבר דורש משהו אחר.
אז אם תשימו לב בצומת אתה צריך להיות הדורשים
או שאתה הולך בסופו של דורש כל חבורה
קבצים שונים של הנמצאים
במקומות שונים ביישום שלך.
והנתיבים יחסי למקום שאתה נמצא
ביישום הנוכחי שלך,
אלא אם כן הוא ברמה עליונה כבר כמשמעותו בהתקנתה
עם MPM כמו ארון ספרים או Knex או Express או משהו,
אלה אינם יחסי.
כן? קרב יותר?
על אישור. על אישור. אז, אתה הולך בסופו של דורש כל חבורה
קבצים של פשוט שונים בך קוד, וזה טוב ורע.
בדרך טובה אתה יודע איפה דברים וזה לא סוג
קסם על מה זה קורה מתחת למכסת המנוע,
אשר באמת יכול להיות מבלבל
כאשר יש לך מאוד Java כבד -
או מסגרת מאוד כבדה כמו Laravel, שסוג של אומר,
אנחנו הולכים לטפל זה כל כך שאין לך
לדרוש את כל מה אבל יש לך
לדעת איך כל דבר עובד על מנת להשתמש בו.
איפה כמו במקרה הזה, זה מאוד פשוט, כמו ל
איפה כל דבר נמצא, הם רק קצוות
דבר להיות הקלדה קצת יותר.
בדיוק כמו בצד שאני אוהב לשימוש, יש תוסף
אם אתה משתמש בטקסט עיוור
שבו אתה יכול להתקין את הצומת מודולים עוזרים ואתה יכול להתחיל
להקליד כמו מדריך ו היא יוצרת את הנתיב היחסי
איפה אתה נמצא של קובץ קוד, סוג של שימושי.
לכן, המודל כמובן הוא דורש בסיס כאן
ולאחר מכן מתמחה בסיס דורש init / מדף ספרים
ולאחר מכן מדף הספרים, זה דורש מדף הספרים ברמה העליונה
ולאחר מכן מאתחל אותו עם למשל Knex אותחל,
אשר קובע את שם הלקוח
והחיבור הגדרות עבור מסד הנתונים.
אז רק אני משתמש פשוט מופע של שPro המשך -
של MySQL, אני ניגש אליו עם Pro המשך ויש לה רק סוג
של מסד נתונים דומים התקנה כמו שהיו לנו
ביישום לדוגמא הראשון עם הקטלוג כמובן.
לכן, אני מגדיר את החיבור שלי הגדרות כאן,
וכל אלה מתועדים בעמוד פרויקט Knex.js
לגבי איך התקנה קשרים אלה.
אז, עכשיו יש לי בסיס המודל שלי.
וכפי שציינתי עם שינוי אב הטיפוס,
כך שלמעשה יכולים להיות סוג של הרבה -
מוסיף המון מוכן מראש לקוד שלך כך אמנה
שהותאם על ידי Backbone.js
ועכשיו Bookshelf.js הוא להוסיף זה להרחיב את השיטה
כמאפיין סטטי על אובייקטי JavaScript שלך,
אשר נותן לו סוג של כמעט טבע ירושה מעמדית
שבו אם אתה קורא להאריך אתה יכול להגדיר כל
מהשיטות אב הטיפוס כי אתה רוצה כאן
ואז אתה יכול - כל שיטות סטטי נוספות
שאולי אתה רוצה, אתה רק יכול להגדיר אותם בעצמכם
כאן אז אני יכול להאריך אותו עם - כך שאם לדוגמא,
מודלים מרובים דרושים להציג את שם ושם לקבל את זה.
אז, הנה, אני אומר שם תצוגה עבור מודל
כברירת מחדל הוא מה השם שלה נכס הוא בדרך אחרת תמורה
אין לו שם.
ועכשיו בכל מודל זה -
המשתרע בסיס מודל זה, אני עכשיו יש שם תצוגה של שיטה
על אב הטיפוס שרשרת למקום כלשהו.
ואם אני רוצה להחליף אותו אני יכול פשוט להגדיר את זה - להגדיר מה -
getName יהיה כאן.
וזה מאפשר לך לחקות ירושה קלאסית
ב-JavaScript, שיכול להיות נחמד במיוחד לדברים
כי הם להשאיל את עצמם להיות כיתה מבוססת כמו דגמי אובייקט.
אז בואו נקפוץ חזרה לתוך קוד היישום.
אז יש לי מסלול לפשוט לוכסן, רק למורה שלי
ולאחר מכן לחתוך את הקורסים.
ושני אלה קוראים שיטת renderCourses.
אז שוב, פונקציות הן המחלקה ראשונה ויכול להיות מועבר
כטיעונים לשיטות.
אז, בapp.get זה, אני מתקשר -
אני מעביר renderCourses כטיעון.
ולהבהיר - או פונקציות יכול להיות התקנה כמו var -
כמו שאני עושה var קודם לכן renderCourses שווה פונקציה
או שהם יכולים להיות רק renderCourses פונקציה.
זה לא עושה יותר מדי הרבה הבדל.
למעשה אתה יכול לקבל מה נקראים שם פונקציה
ביטויים, שהם שווים renderCourses var
renderCourses פונקציה.
וגם, הסיבה לרוצה להיות שם פונקציות במיוחד
בצומת הוא שזה נותן לך נקי -
מעקב מחסנית קריא יותר.
אז אם יש לך כל חבורה
של פונקציות בעילום שם זה אומר -
כאשר יש לך שגיאה בתכף הקוד שלך -
אתה לא יודע איזה פונקציה זה קורא לך הייתי צריך להסתכל
במספר הקוד ומספר הקו
וזה לפעמים יותר קל רק כדי לנתח מבחינה ויזואלית
כאשר יש לך בעצם שמות
עבור הפונקציות עצמם בצד השרת.
אז renderCourses זה, בואו נקראים ליישומי צומת -
אז אני מקשיב על ליבת 3000 [הפונטי].
וכך כל זה עושה את הדבר נכון כאן הוא פשוט מקבל את כל
קורסים ממאגר המידע.
אני אפילו לא מגביל אותו אז זה עושה מספר עצום
שורות זה חוזר.
וכדי לעשות את זה,
בדגם כמובן שיש הוא מאפיין סטטי
בשם אוסף.
ואז אני פשוט קורא לזה - אני אמר ליצור אוסף חדש
לקורס זה, ולאחר מכן להביא אותו,
ולאחר מכן להחזיר את הקורסים אוסף כאן בהבטחה.
אז באופן פנימי, דוד ב-- המחצית האחרונה לימדה קצת
על הבטחות והבטחות מאוד בשימוש בכבדות בשני Knex
מדף הספרים ובגלל זה מעניק -
זה נותן לך יכולת יש חבורה
שיחות אסינכרוני שונות של וסוג של להצטרף אז יחד
או להביא משהו, ואז
עם ששיחה נוספת שיחת מסד נתונים אסינכרוני
ולהחזיר ערך וש ואז לקפוץ למשנהו לאחר מכן
ואז יש לי הבא ולאחר מכן לתפוס ממש בסוף למיין
מלכוד לנסות אסינכרוני של חקיין התנהגות עם קוד אסינכרוני,
בגלל שאתה רואה את זה עכשיו
אבל זה אפילו יותר קשה פעם אחת אתה מתחיל להתמודד עם זה.
קוד אסינכרוני הוא פשוט בכל מקום
בצד השרת JavaScript ו באמת למידה הרבה יותר גדולה
ממה שאתה רגיל, אם שעשית JavaScript
בצד הלקוח.
כך שבאמת, באמת עזרתי לך שם בחוץ.
אבל רק כדי להראות לך שמירה על הבאגים
שאני מדבר ב הכלים מפקח הצומת,
אני הולך קדימה לזרוק קו הבאגים כאן
בפונקצית renderCourses ולראות לאן זה מוביל אותי
כש-- כך צומת מפקח יכול להיות מותקן
על ידי עושה NPM התקן עם דגל G,
מה שאומר גלובלי מפקח צומת.
וזה יהיה להביא אותו לתמ"א ולהתקין אותה ברחבי העולם
עבור היישומים שלך כל כך פשוט שאתה יכול לקרוא לזה
משורת הפקודה.
כבר מותקן זה כל כך אני אלך קדימה ו--
בעצם אולי יש לו לחכות זה רק ייקח,
לוקח שתי שניות.
ומה צומת מפקח שוב מאפשר לך
לעשות הוא להיות חסר ראש זה גרסה של קונסולת הבאגים
שאתה רגיל בעבודה בצד הלקוח ולהיות מסוגל
לעצור, רק להוסיף שצוין מצביע בקוד שלך.
עצור ביצוע ולקחת להסתכל על מה שקורה,
אשר היו באמת שימושי אם התכונה
כמו שהיו זמינים
כאשר באגים קוד PHP אני בטוח.
אז בואו רק לקחת להסתכל על זה.
אז רק אני יכול לקרוא מפקח צומת
וזה אומר לבקר בכתובת זו נמל 5858 להתחיל איתור באגים,
זה רק ברירת המחדל לאיך זה מתחיל לעלות.
אז, אני כבר עכשיו יש - יש שום דבר לא קורה כאן
כי אני צריך להתחיל.
[הפונטי] מבוי סתום אז צומת דגל באגים ולאחר מכן app.js.
אז זה אומר הבאגים מאזין ביציאה 5858,
ההאזנה Server Express על 3000.
אז אנחנו טובים ללכת.
תן לי רק לרענן את זה.
ועכשיו אני יכול לראות את app.js קוד שאני רק מסתכל
אבל כאן במסוף.
אז עכשיו, אם אני מנסה להפעיל את זה, אתה יכול לראות את זה, זה מפסיק.
זה רק מחכה בגללה ביצוע קוד כולו הוא עכשיו
נעצר על הבאגים זה קו ששמתי שם.
ועכשיו אני יכול שרת -
[הערה לא נשמע]
אה, כן. מה היא מילת המפתח קיצור כדי להגדיל מסך?
אה שיש.
קיבלתי את זה. על אישור.
[הפסקה]
אה, זה לא נראה [הפונטי] ש.
לכן, קורסים הוא גדולים באמת
משום שאני לא עושה להגביל את הסעיף או משהו,
זה פשוט מקסים מסד נתונים שלמים של קורסים
שהרבה מהם.
וכך - שהוא אובייקט
כי באמת עשוי לקרוס למשל מפקח הפתק.
שלמענם - אישור.
תן לי לעשות גבול ו אז אנחנו יכולים להעיף מבט
כאשר זה לא להביא מאות קורסים.
אז, להרוג את השרת ומפקח
ואני אעשה את קורס מגבלת שאילתת אוסף 20.
אז, בדף הספרים, שלא כמו בLaravel
שבו אתה יכול פשוט להתקשר להגביל באופן ישיר או להתקשר לכל
שיטות SQL אלה כי אתה משתמש
לישירות על מופע ORM.
בכל פעם שאתה משתמש רק שיטת SQL הניתנת
בKnex, שיש לך קורא את השאילתה למיין
מלנצל את רשת השאילתה.
ויכול להיות מופעל זה עם או פונקציה,
כך שאתה יכול לומר, פונקציה מגבלה זו 10 או שאתה קורא לזה
על ידי ציון שבי שיטה שהיית רוצה לקרוא
במופע Knex ולאחר מכן שערך.
אז אנחנו הולכים לעשות להגביל 20 ולאחר מכן קבע.
אנחנו עושים בעצם לא צריכים הבאגים כאן
כי רק אנחנו יכולים להגדיר נקודות עצירה
וזה עושה את זה יותר קל.
בסדר.
אז, בואו לקבוע נקודת עצירה ממש כאן ולנסות לטעון אותו.
קו הלא נכון.
ממש כאן.
[הפסקה]
על אישור. אז זה הפסיק שוב.
אז עכשיו, קורסים הוא אובייקט עם אורך של 20
ואנחנו יכולים לראות את כל שונים מודלים שזה מופרך
ממאגר הנתונים כאן אז יש לי אובייקט מודל
שיש לו, בתוך מייחס רכוש
על האובייקט הם כל הדברים כי הוא נמצא במסד הנתונים.
כל אירועים שיש להם נרשם
כך שאתה יכול לרשום את אירועים שונים,
לדוגמא, כאשר המודל הוא להיות נמחק
או כאשר היא נשלפת,
אתה יכול להגדיר שונה תכונות או לשנות דברים.
יש הרבה של קרסים שונים וכל אלה מתועדים
בBookshelf.js תיעוד שיאפשר לך
לעשות סוג של כלום שאתה באמת רוצה לעשות
עם המודלים שלך ואוספים.
אתה יכול - שהם אמורים להיות באמת להתאמה אישית
וממש קל ל לך להתאים אותם
לצרכים שלך יישום.
אבל רק מחפש דרך כאן,
אני יכול לראות מה שונה קורסים זמינים.
ובמקרה הזה, אני בעצם לא להביא
עם כל הנתונים אחרים מלבד רק הקורסים עצמם.
אבל באופן דומה ל ORM הרהוט אתה יכול להגדיר
עד יחסים, אז כמובן שייך לרבים מדריך.
לכן, אם אני הולך קדימה ו לעצור את היישום,
לקפוץ לזה להביא את השיחה, ניתן לציין אפשרויות שונות
שאתה רוצה להעביר אליו.
ואחד מהם הוא יכולת לטעון קוד קשור
על ידי ציון withRelated מדריכים אז קורסים.
אז בואו נחזור ורענן זה כאן ולעצור שוב.
אז עכשיו, הקורסים להתנגד, אותו מספר של מודלים,
אבל עכשיו כל דגם יש חשיש יחסים
שבו יש מדריכים שזה קשור אליו.
אז כמובן שזה לדוגמא
יש 082 שהוא כמובן שני מודלים מדריך בנושא.
ואתה כבר יכול לראות איך הרבה יותר קל זה הוא למיין
מבחינה ויזואלית לעבוד עם יותר עם דברים כאשר אתה מתעסק
כי אתה סוג של שינוי הקוד ולאחר מכן לנסות את זה שוב ב-PHP.
העובדה שאתה יכול פשוט לעצור את הביצוע כולו
ולהעריך מה יש כאן ו - במסוף, -
להקטין את התצוגה, קורסים הוא, אתם יודעים,
מה שההיקף המקומי משתנים זמינים
ואת זה הוא כיום הגלובלי אובייקט משום שכפי שראית אותו,
אלא אם כן אתה קורא לעם הקשר ספציפי, זה לא הולך
יש משהו רלוונטי כאן.
ולאחר מכן, - תן לי להראות עוד כמה דוגמאות
יישום הבטחות.
אז במקום לעשות את זה מדריכי withRelated כאן אני
הולך קדימה ולעבור את זה להביא ולאחר מכן הקורסים,
אני הולך לחזור מדריכי courses.load.
ואז - אז אתה קורא אז.
[הפסקה]
אז בשלב זה, יש לטעון קורסים
עם המדריכים, אשר היא פעולת אסינכרוני.
אבל בגלל שאנחנו מחזירים אותו מהבטחה, את הערך הבא
כי אז הוא מה זה שיחה חוזרת אסינכרוני
שבמקרה של העומס הזה היא שיטה בדף הספרים
המחזיר למעשה האוסף עצמו.
אז זה מעמיס מדריכים על שם
ואז אתה יכול לציין - אם זה רק אחד רכוש,
אתה יכול לציין זאת כמחרוזת, אחרת,
אתה יכול לעשות מדריכים ודרישות
כשיטה - מצטער, כמערך.
ואז אם אתה רוצה להגיע באמת מפואר ולהגביל כל
אלה ניתנו שליפות, אתה ניתן לציין אותו כחשיש
עם מדריכים ואז מה אתה רוצה להגביל את השאילתה הלאה.
לכן, אני רוצה לטעון את כל מדריכים בקורסים שבו -
כך QB לבונה שאילתה שבו המצב הוא פעיל.
ואתה יכול לקבל באמת מפואר עם כל
של השאילתות בנושא אתה רוצה לבנות.
אבל, רק לעת עתה, אנחנו הולכים לדבוק רק מדריכים
ואנחנו חוזרים ערך ש
כך אז צריך הבא לאחר מכן יש לי העמיסו את כל הקורסים
כראוי.
ואם הייתה טעות בשלב כלשהו בשרשרת ש,
זה יהיה לקפוץ למטה כדי לתפוס.
אז בואו נלך קדימה ולהפעיל את זה.
אז בכל פעם - שלא כמו ב PHP, חיסרון אחד הוא
"כי צומת" היא ריצה ארוכה תהליך, שאתה באמת צריך
כדי לעצור את תהליך הצומת כפי שאתה לעדכן את הקוד שלך,
משום שהגרסה שזה ריצה בזמן הריצה היא,
הגרסה של קוד שהיה טעון
כשהתחיל לא מה יש לך סוג
עודכן הקוד שלך עם מאז.
על אישור. אנו נקבע את נקודת עצירה כאן, כאן ורענון.
[הפסקה]
הו, אני ממש לא לרענן את הדף או
אז זה היה בתהליך הישן.
אז אתה לרענן גם את זה ומפקח הצומת.
אז עכשיו אנחנו רואים קורסים.
אם אנחנו פשוט לקחת דגימה של אחד מהמודלים האלה,
אנו יכולים לראות כי היחסים אובייקט הוא ריק, אבל עכשיו -
והסיבה שאתה צריך כדי להגדיר נקודות עצירה הוא, ובכן,
אני ציינו שאתה יכול לקפוץ לתוך מעקב המחסנית
ותראה שאתה יודע, שבו זה הולך באפליקציה.
אז עכשיו אני יכול לראות מה יש קורה בשיטת העומס,
שאני הגדרתי על האוספים.
זה סוג של "המון להוטים יחסים על כבר ".
ואתה יכול לעבור דרך ותראה את השורה האחרת השורה
שבו החומר הזה הוא הולך וזה נהדר.
אם יש לך משהו שנשבר בקוד שלך,
זה לזרוק איזו שגיאה ו אתה כמו, אני באמת רוצה
כדי לראות לאן זה הולך.
אבל ברגע שאתה נתקל ב אסינכרוני משהו, -
זה הולך למשנהו סמן את אירוע הלולאה
ואתה מאבד אותך - אתה מאבד את המקום שלך
במפקח הצומת.
אז אתה צריך לומר, "בסדר, ברגע שאני מאבד את זה,
זה צריך להפסיק עכשיו בקו הזה שוב. "
כי אם המשכתי להכות למטה, במורד הערימה,
זה היה סופו של דבר רק הלך משם היה שאני לא מגדיר את זה
קו 22 קו הפסקה כחול.
אז עכשיו, אם אני מסתכל בקורסים כאן,
שהוא צריך בביחס מדריכים
ואז יש לי מדריכים לצרף אותם.
אז, אתה יכול לראות שחזרתי הבטחה מההבטחה הראשונה
ואז אתה כל הזמן יכול לעשות את זה לאורך הקו.
אז הבטחה שונה, מבטיח ספריות,
הייתי אחד בשם ציפור כחולה שהוא באמת שימושי.
זה מוסיף המון יפה של זה לשינוי אסינכרוני -
שינוי השיחה בחזרה קוד בסיס לדברים
שעובד גם עם הבטחות.
אבל - סליחה [לא ברור] מה אני הולך להגיד את זה שם.
בואו נסתכל אם כי ב--
אז בואו נגיד שלא היה בעיה בעת תחזור משהו.
אז יש לי דרך אחרת זה כדי למצוא שנקראו מזהה כמובן.
אז בואו לעשות קורס 2.
האם אני יכול לקבל - כמובן JSON.
וזה עושה [לא ברור].
[הפסקה]
אני מריח משהו כאן לא בסדר.
לא על 3000, הייתי על כרטיסיית מפקח Chrome.
על אישור. אז בואו נלך ל כמובן - כמובן JSON 1.
וזה מחזיר רק בJSON פורמט, כמובן טעון
עם כמה מדריכים.
אבל הדוגמא שאני רוצה לתת כאן הוא כי,
אני עושה מזהה כמובן JSON.
ובפרמטרים להביא, אני מפרט דורש נכון,
אשר היא אופציה זה מתועד בדף הספרים
שבו הוא אומר את זה, "אם, אני מנסה למצוא את הקורס הזה
וזה לא שם, אז לזרוק שגיאה. "
וזה צריך להיות נתפס על ידי לתפוס לחסום כאן למטה.
אז בואו נלך קדימה ולקפוץ חזרה למפקח הצומת ולנסות
ולשבור את זה ו תראה מה יש לנו.
אז בואו נקבעו הפסקה כאן על מהלך JSON.
בסדר.
אני אלך לקורס JSON ו הייתי שם בכמה פשוט -
[הפסקה]
זה יכול להיות קצת מסובך לפעמים כשאתה מנסה
כדי לנהל בו אחד כבר רענון
ושיש להם לא - בואו לראות.
אז זה מתקשר שגיאה תגובה ריקה.
[הפסקה]
בואו נזרוק את הבאגים בכאן.
בגלל איך שצומת מייעל למעשה
לריצת JavaScript להיות כל כך מהר על השרת,
לפעמים הבאגים הצומת יש כמה שגיאות בעת הניסיון
ולהגדיר נקודות עצירה באופן דינמי ואתה באמת צריך לעשות
להשתמש הבאגים ו לא. שורה אחר שורה
אז בואו נראה אם ​​זה מקבל אותנו מה שאנחנו רוצים.
אז אני קובע, app.get id כמובן JSON,
ואני קבעתי הבאגים שלי שם
בדוח לתפוס בתחתית.
תביא דורש אמיתי, שהוא צריך - בסדר, יש לנו ללכת, נשבר.
אז, עכשיו אני יכול לראות שזה הפסיק
בלתפוס לחסום זה סופי בגלל withRelated -
או בגלל שדורש אמיתי צוין ואין כמובן
עם תעודת זהות של זה גדול מספר דרך חריג
שכרגע הוא Emessage.
וכל שגיאה ב-JavaScript יש רכוש מחסנית
שמגיע יחד עם זה.
אז זה לעתים קרובות שימושי ללמשל,
לנחם להתנתק e.stack.
ואני ממש יכול לראות כאשר אני מכה שגיאה.
אז אני מקבל את השגיאה ריקה תגובה, זה המסר
שנשלח באמצעות ארון ספרים.
אבל עכשיו, אני יכול להעיף מבט בשיחה במחסנית, ותראה
כי בדף הספרים מודל הדיאלקטים של SQL 83,
תגובה ריקה שגיאה נזרקה.
וזה מקום שבו אני כאמור, זה נקודה אנונימי
בגלל שזה בעילום שם פונקציה.
אם זה היה שם פונקציה היית רעיונות טובים יותר
הלמתפקד למעשה דרך מבלי ללכת
לתוך קוד model.js.
למרות שזה אמור להיות די, די קריא,
כך שאני יכול לראות באינטרנט את זה.
מה הם אמרו לי הייתה לי שורה 83.
לכן, אם options.require ו התגובה לא הייתה קיימת,
עכשיו זה זורק חדש טעות תגובה ריקה.
אז אתה יכול לראות די ברור איך זה עובד.
ופנימי בארון ספרים,
יש פשוט כל חבורה של שימוש בהבטחות.
כדי שתוכל לציין Promise.method
עם ספריית ציפור כחולה אשר שומר את ההקשר הנכון
בזמן שזה חוזר הבטחה.
ואז יש לי - אני מחייב הערך של זה דומה
למה שציינתי קודם לכן, אלא באמצעות הבטחות
ואז אני יכול - הוא חדש.
זה יכול להיות אסינכרוני או לא, אם אני רוצה.
ולאחר מכן אני עושה קצת דברים אחרים אשר עשוי
או לא עשוי להיות אסינכרוני ו לאחר מכן מיני קפיצות למטה זה.
אז Promise.all הוא עוזר כי הרבה ספריות הפופולריות יש לי
שבו אתה יכול להיות מערך של פוטנציאל רשאי
או לא עשוי להיות הבטחות.
וברגע שכל אלה הם הושלם, אתה חוזר כי
ואז זה קופץ לשורה הבאה
ואתה יכול לראות איך זה באמת משטח את הפירמידה
שאתה מקבל, גיהינום התקשרות כשלה ידוע
אם אתה עושה את כל מה עם קו שיחות טלפון על ידי קו.
ישנן דרכים לעקוף שאבל הבטחות הן אחד
הדרכים הטובות ביותר לדעתי
באמת לשמור על הקוד שלך נקי וקל לקריאה.
אז זה פשוט קצר מבוא לJavaScript
ולמדף ספרים וKnex באופן כללי.
וגם, אם יש לך שאלות, אני יודע שזה טון של חומר
כדי לנסות ולכסות סוג של במיוחד מאז השפות,
שלא כמו רוב שאתה מכיר כל כך אני רק רציתי
כדי לעשות את זה, כך שלפחות אם אתה נתקלת בבעיות
עם הקוד שלך, אתה סוג של יכול לקפוץ -
זה מה שאני אוהב לעשות, הוא סוג של לקפוץ לתוך הספריות
שאני משתמש ותראה איך דברים בנויים.
יש אחד שיש לי שהוזכר קודם לכן נקרא Backbone.js
ולמעשה זה [לא ברור] בצד הלקוח
כדי לעזור ולתת להציג מודל מבנה הבקר
לקוד שלך.
אבל זה בעצם יש מקור תיעוד מוער
אשר מאפשרת לך לראות סוג של.
זה ממש טוב מתועד, מה שקורה,
איך זה משלים פונקציונלי אייאקס
או פונקציונלי או אירוע סוג המודלים ואוספים
להסביר מה קורה בתהליך.
ואם אתה מבין את היסודות של JavaScript
כמו הירושה prototypal ועד כמה משמשות פונקציות
כשני אובייקטים וערכים ושיעורים והכל.
זה עושה את זה הרבה יותר קל כדי להבין מה קורה
באופן פוטנציאלי ב ספריות שאתה משתמש
וקוד והבאגים יוכלו כדי לא לדפוק את ראש
על הקיר, כי אתה לא מבין איך
חלקים שונים עובדים, כל כך.