להתחיל עם React Native Debugging

React Native הפך לאחד המסגרות המאומץ ביותר לבניית יישומים ניידים חוצה פלטפורמות, למינוף JavaScript ותגובה לספק חוויות דמויות מולדת. Debugging הוא מיומנות הליבה המשפיעה ישירות על מהירות הפיתוח ואיכות האפליקציה. בין אם אתה חדש או מפתח מנוסה Flipper, הבנת מערכת אקולוגית debugging זמין ב-Regent יעזור לך לזהות בעיות מהירות יותר, להפחית את הזמן על גבי ייצור באגים, ו-ידי כלי תגובה יעילים יותר.

לפני צלילה לכלים ספציפיים, זה עוזר להגדיר את סביבת הפיתוח שלך עבור אופטימלי debugging.להבטיח שיש לך את הגרסה האחרונה של React Native מותקן, כמו הודעות חדשות יותר לעתים קרובות לכלול שיפורים bugging ו deprecation של שיטות מיושנות. עבור iOS, באמצעות מכשיר בפועל עם חיבור USB יכול לחשוף בעיות כי סימולטורים מעורפלים, בעוד חיקוי עשיר של אנדרואיד מציע bugging תכונות באמצעות ADBirding או תרופה (F) עם תרופה זו מופעלת (R) עם תכונות לחץ דם (D) עם טיפול תרופתית (D2D) עם תרופה (D) הוא זמין ביותר:

Chrome Developer Tools: The Classic Debugging Workhorse

הכלים של Chrome Developer Tools (Devtools) היו מרכיב מרכזי ב- React Native debugging מאז ימי ההתחלה של המסגרת.When you can debuing from the Developer menu, קוד JavaScript של האפליקציה פועל בתוך Chrome, ומאפשר לך להשתמש בחבילה המלאה של תכונות Devtools. שיטה זו פועלת על ידי הקמת חיבור WebSocket בין אפליקציית React ו-Chrome, כך שתוכל לבדוק אלמנטים, סטוינט, ובקשות בזמן אמת.

עקבו אחרי Chrome Devtools in React Native

להתחיל להתבולות עם Chrome Devtools:

  1. פתח את האפליקציה Native React שלך על מכשיר חיקוי או מכשיר פיזי.
  2. פתח את תפריט המפתח על ידי רעד המכשיר או לחיצה על:0Cmd+DFLT:1 (iOS) / 2Cmd + MigFLT 3 (אנדרואיד).
  3. בחר "Debug" (או "Debug JS מרחוק" בגרסאות ישנות יותר) כרטיסית Chrome חדשה תפתח עם ממשק Devtools.
  4. ב-Chrome, הקש (FLT:0) ,0 (Option+IFLT) או 1:1 (Mac) או FLT:2Ctrl+Shift+IveFLT 3 (Windows/Linux) כדי לפתוח את Devtools אם לא מופיע באופן אוטומטי.

לאחר חיבור, תוכל להשתמש בלוחות הבאים ביעילות:

  • (FLT:0)ElementsofFLT:1; בעוד לא עשיר כמו כלי מפקח יליד, פאנל האלמנטים מראה עץ DOM פשוט של תצוגות האינדיאנים התגובה שלך.You יכול לערוך סגנונות בשורה כדי לבדוק שינויים פריסה.
  • (ב) [ה]: [ה] [ה]] [ה]], [ה], [ה], [ה]], [ה], [ה],] [ה],] [ההה']'[ה]']'[ה']'[ה']'[ה']'[ה']']'[ה']'[ה'[ה']']']'[ה'[ה']']'[ה']']'[ה'[ה'[ה'[ה'[ה'[ה']']']'[ה'[ה']'[ה'[ה']']']']']']'[ה'[ה'[ה'[ה']']']']']'[ה'[ה']']'[ה'[ה']'[ה']']'[ה']']']'[ה'[ה'[ה']']']'[ה']']'[ה'[ה'[ה'[ה'[
  • (ב) [15] מקורות: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (FLT:0NetworkearFLT:1): בקשות HTTP ו- WebSocket שבוצעו על ידי האפליקציה שלך.
  • (FLT:0)PerformanceFLT:1: רשומות וניתוח ביצועים רצופים, כולל FPS, שימוש בזיכרון וזמן ביצוע JavaScript.

עם זאת, זכור כי Chrome Devtools debugging מציג צף קל כי JavaScript פועל במנוע V8 של Chrome ולא במנוע JavaScript הילידים (Hermes או JSC) זה אומר כמה באגים המופיעים רק על המנוע הילידים עשויים שלא להתרבים ב-Chrome.

תגובה Native Debugger: Integrated Redux ו-React Devtools

React Native Debugger הוא יישום שולחן עבודה עומד המפגיש את React Devtools ו Redux Devtools לתוך ממשק יחיד וידידותי למפתח.זה מבטל את הצורך לעבור בין כלים שונים ומספק תצוגה מאוחדת של עצי הרכיב, שינויים המדינה, ופעולות רדוקס.כלי זה מועיל במיוחד לפרויקטים המשתמשים Redux לניהול המדינה, כפי שהוא מציע זמן debugging ו המדינה diffing מחוץ לקופסה.

עקבו אחרי Native Debugger

כדי להשתמש ב-React Native Debugger:

  1. הורד את המהדורה האחרונה של ה-FLT:0 (הידועה ב- GitHub repositoryFLT:1) והתקין אותה על המכונה שלך.
  2. הפעל את היישום React Native Debugger לפני תחילת היישום של React Native.זה יקשיב אוטומטית על הנמל 8081 (או נמל ברירת המחדל מטרו).
  3. פתח את התפריט של היישום שלך ובחר "Debug" או, אם יש לך מטבול מותאם אישית להגדיר, "Debug with React Native Debugger".
  4. הממשק משלב פאנל שמאלי ל- React Devtools (עץ משותף) ופאנל נכון עבור Redux DevTools (לוג פעולה, מפקח המדינה).

מעבר ל-DuTools הכפול, React Native Debugger כולל גם קונסולת מובנים, מפקח רשת, ומפקח אלמנט דומה ל-Chrome Devtools.It תומך ב-Breakpoints ו- Watch Varis, מה שהופך אותו לסביבה מלוכדת מקיפה. כי הוא מנהל את JavaScript במנוע V8 של אלקטרון, הוא חולק את אותה הגבלה כמו Chrome Devtools עבור בעיות ספציפיות שלה.

מתי להשתמש ב-Re React Native Debugger Over Chrome Devtools

אם הפרויקט שלך מסתמך במידה רבה על Redux או MoX, כלי ניהול המדינה המשולבים של Native Debugger הם שינוי משחק.אתה יכול לשחזר פעולות, לבדוק את המצבים של המדינה, לייצא בכל נקודה. עבור מפתחים המעדיפים חלון נפרד המוקדש רק כדי debuing ללא הסחות דעת של כרטיסיות Chrome אחרים, כלי זה מציע זרימת עבודה נקייה.

Flipper: The React Native Debugging Platform

Flipper הוא פלטפורמת קוד פתוח שפותחה על ידי Meta (לשעבר פייסבוק) עבור debugging יישומים ניידים.It אומץ כמו כלי ברירת המחדל debugging עבור React Native בגירסה 0.62 ומספק תוסף אקולוגי עשיר. Flipper פועל באופן מקורי לצד iOS ואפליקציות אנדרואיד, המציע תכונות כמו פריסה, רשת, שידור, דיווח ומסד נתונים.

התקנת וידוי Flipper

כדי להגדיר Flipper עבור פרויקט React Native:

  1. הורד Flipper מהאתר הרשמי של Flipper:0.
  2. ודא שהגרסה של React Native היא 0.62 או מאוחר יותר (או להוסיף באופן ידני את התלויות Flipper לפרויקט שלך) עבור פרויקטים חדשים שנוצרו עם FLT 3, Flipper נכלל כברירת מחדל.
  3. הפעל את האפליקציה שלך על אדפטוטור או מכשיר. Flipper צריך לזהות באופן אוטומטי את האפליקציה ברגע שהיא מתחילה.על כמה חיקויי אנדרואיד, ייתכן שיהיה עליך להפעיל את FLT:4 כדי לאפשר תקשורת.
  4. אם Flipper אינו מתחבר, בדוק כי החבילה של 5 (ב) קשורה בחבילת ה-FLT:6 ו-FLT 7.

מפתח Flipper Plugins עבור React Native

  • (FLT:0)Layout InspectorerphFLT:1: לחץ על כל אלמנט UI על המכשיר כדי לראות את שם הרכיב, סגנונות, היררכיה של הורים-ילד, וקואורדינטות מוחלטות.זה הרבה יותר חזק מפאנל האלמנטים של Chrome כי זה עובד עם נוף Native.
  • (FLT:0Network PluginigFLT:1): ראה את כל בקשות הרשת שנעשו על ידי האפליקציה שלך, כולל ראשי תיבות, תשלום ותזמון.You canסינון, חיפוש, ובקשות replay. זה גם מראה בקשות כושלות וקודי שגיאות.
  • (ב) [ה]: [ה]] [ה]] [ה]]: [ה] [ה] [ה]]] [ה]], [הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה]]]]]]]]]]]]]]]]]] [הההההההההההההההההההההההההההההההההההה
  • (ב) ⁇ :0) ,Crash Reporter PluginFLT:1: לכידת תאונות ילידות וערימות JavaScript עקבות, מתן ציר זמן של אירועים המובילים לתאונה.
  • (FLT:0)Hermes Debugger PluginFLT:1; אם אתה משתמש Hermes כמו מנוע JavaScript שלך, תוסף זה מאפשר bugging עם נקודות, שלב אחר, ובדיקה משתנה ישירות על המכשיר.
  • (FLT:0Database PluginFLT:1): Browse ועריכה מסדי נתונים של SQLite כי היישום שלך משתמש במהלך הפיתוח, מה שהופך אותו קל יותר לאמת את ההתמדה של נתונים.

אדריכלות התוסף של Flipper מאפשרת גם תוספים מותאמים אישית.צוותים לעתים קרובות ליצור תוספים כדי לדמיין מצב אפליקציה פנימי, תגובות בשרת לעג, או אירועי ניתוח יומן. גמישות זו הופכת את Flipper כלי הדה-ההוכחה העתידיים ביותר במערכת האקולוגית של React Native.

ביצוע פרופ'ורלינג וזיכרון

מעבר לתיקון שגיאות לוגיות, בעיות ביצועים מבוכות הוא קריטי עבור מתן חוויית משתמש חלקה. React Native מספק מספר דרכים לפרופיל הביצועים של האפליקציה שלך.

עקבו אחרי React Native Performance Monitor

תפריט המפתח כולל אופציה "ראה Perf Monitor" שמעכבת גרף קטן על גבי האפליקציה שלך.

  • (FLT:0)FPSIRLT:1; מסגרות לשנייה.חוויה חלקה צריכה לשמור על 60 FPS (או 90/120 על מכשירים רענון גבוה). טיפות מתחת 30 FPS מצביעות על ג'נק.
  • (ב) ,0)JS FPSIRFLT:1: שיעור המסגרת של חוט JavaScript.אם טיפות אלה, קוד JavaScript שלך עשוי לחסום את החוט הראשי.
  • (ב) ,0) ,(ה) ,(ה) ,(ה) ,(ה) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

השתמש במוניטור זה כאינדיקטור ראשון שמשהו לא בסדר, ואז השתמש בכלים גרפיים יותר כדי לאתר את הסיבה.

עקבו אחרי Chrome Devtools Performance Tab

כאשר מתפוגג מרחוק עם Chrome Devtools, הכרטיסיה של הביצועים יכולה להקליט ציר זמן של ביצוע JavaScript שלך, כולל שיחות פונקציה, פריסות ואירועים צבע.

  1. פתח את Chrome Devtools המחובר לאפליקציית שלך.
  2. היכנס לכרטיסית הביצוע ולחץ על לחצן הרשומה.
  3. אינטראקציה עם האפליקציה שלך כדי לשחזר את הבעיה של הביצועים.
  4. תפסיקו להקליט ולנתח את תרשים הלהבה.חפשו פונקציות ארוכות טווח, פריסות תכופות, או התחדשות מוגזמת.

עם זאת, מכיוון ש- JavaScript פועל ב-Chrome, מספרי הביצועים (במיוחד זיכרון) עשויים להיות שונים מהמכשיר האמיתי.עבור פרופיל דמוי הפקה, השתמש בתוסף הביצועים של Flipper או בכלים של React Native כמו FLT:9 .

זיכרון דיון עם Xcode ו- Android Studio

עבור דליפות זיכרון Native, השתמש בכלים ספציפיים פלטפורמה:

  • (ב) ,0)Xcode Instruments (iOS)FLT: Run your app in Xcode, ולאחר מכן השתמש בכלי ה-Leks ו- Allocations כדי לזהות אובייקטים נשמרים וצמיחת הזיכרון.
  • (FLT:0אנדרואיד) Studio פרופילr (אנדרואיד)FLT:1: פתח את הכרטיסייה פרופיל כאשר פועל היישום שלך על אדאודור או מכשיר.זה מראה זיכרון, CPU, ושימוש ברשת בזמן אמת.

כלים אלה הם הכרחיים כאשר בעיות פיזור המופיעות רק לאחר שימוש ממושך באפליקציה, כגון דליפות זיכרון ממאזינים ללא הסרת מוחות או רכיבים בלתי מומשים.

דיון משותף Scenarios ופתרונות

גם עם כלים חזקים, לדעת כיצד לגשת לבעיות ספציפיות מהירויות על ההחלטה.כאן כמה בעיות נפוצות נתקלו במהלך התפתחות האינדיאנים של React וכיצד לפוצץ אותם.

"לא ניתן לפתור שגיאות מודול"

זה קורה לעתים קרובות כאשר החבילה חסרה או יש גרסה לא מתאימה.בדוק את ה-FLT שלך ( 10) ולוודא כי יש לך לרוץ FLT:11 או FLT:12; אם המודול הוא קובץ מקומי, לבדוק כפול את הנתיב הייבוא. השתמש הודעת השגיאה של מטרו החבילה כדי לראות איזה קובץ הוא נכשל.

מסך Blank על השקת App

מסך ריק בדרך כלל מצביע על טעות JavaScript במהלך ההתחלתיזציה.עם Chrome Devtools או React Native Debugger, פתח את לוח הקונסולה כדי לראות את הודעת השגיאה. Common גורם לכלול שגיאות מס, החסר FLT:14, או מודול לא תקין המקשר בין אם השגיאה היא Native (למשל, פוד חסר), המכשיר או תוסף של Flipper יציג את הפרטים.

המדינה לא צפויה

בעיות ניהול המדינה יכולות להיות מסובכות. השתמש ב- Devtools (או ב React Native Debugger או Chrome Devtools עם הרחבה של כלי המפתח של React) כדי לבדוק את העץ המרכיב ולבדוק את המדינה הנוכחית ואביזרים. עבור יישומים Redux, לפתוח את לוח הבקרה Redux Devtools ולהשוות את הפעולה שנשלחה עם ה-Defff. Setpoints בתוך הפחתתם כדי לאמת פעולות שגורמות לשינויי של המדינה הנכונה.

ביצועים איטיים

(ה) בעיות ביצועים עולות לעתים קרובות מרשימות גדולות או רשימות גדולות.בדוק את ה-Common Native Performance Monitor עבור FPS טיפות, ולאחר מכן פרופיל עם Chrome Devtools כדי לראות אילו רכיבים חוזרים לעתים קרובות.שימוש ב-FLT:15, (FLT:16, או FLT:17 כדי למנוע עדכונים מיותרים.

הצצה לתוך זרימת העבודה לפיתוח שלך

כלים מתבוללים יעילים ביותר כאשר משתמשים בהם באופן עקבי לאורך מחזור הפיתוח, לא רק כאשר באג מופיע.כאן הם שיטות לשלב bugging לתוך זרימת העבודה היומית שלך.

עקבו אחרי Auto Handling

השתמש בגבולות שגיאה ברכיבי התגובה שלך כדי לתפוס שגיאות JavaScript בחסד ולגור אותם למערכת כמו Sentry או באגסנג. במהלך הפיתוח, אתה יכול להפנות את הגרפים האלה ל Flipper או הקונסולה כך שאתה לתפוס בעיות מוקדם.

לכתוב קוד פתוח וניתן לערעור

לשבור את הקוד שלך לפונקציות קטנות, טהורות ורכיבים.זה מקל על בידוד באגים ולכתוב בדיקות יחידה.כאשר מתרחשת בעיה, אתה יכול לשחזר אותו במהירות בסביבת מבחן ללא יישום מלא פועל. כלים כמו Jest ו- React Native Testing Library משלימים את מאמצי הדהור שלך על ידי לתפוס תוקפנות לפני שהם מגיעים לייצור.

שימוש בעומס חם ובירענן מהיר

התגובה של Native's מרעננים מהר (התקבלה כברירת מחדל בגרסאות האחרונות) מאפשרת לך לראות שינויים באופן מיידי מבלי לאבד את מצב האפליקציה.עם זאת, זה יכול להסתיר בעיות המתרחשות רק על שיגור אפליקציה חדשה.כאשר מחיקת באגים ראשוניים של המדינה, זלזול מהיר באופן זמני על ידי עריכה הקוד שלך לאחר עומס מלא.

בדיקה אוטומטית עם Debugging

שילוב של בדיקות אוטומטיות באמצעות כלים כגון Detox או Appium עבור בדיקות קצה-to-end. כאשר מבחן e2e נכשל, השתמש בכלי צילום מסך של Flipper כדי ללכוד את מדינת UI ברגע של כישלון, או לשלב עם Flipper כדי לעצור על כשלי בדיקה לבדיקה ידנית.

אינטגרציה מתמשכת

בצינורות CI /CD, debugging יכול להיות מאתגר כי אין אינטראקטיבי UI. השתמש ב- ®FLT:21 ו-FLT:22 פקודות לייעל יומני, או ללכוד גרפים באמצעות Flipper SDK. להגדיר את CI שלך כדי לאחסן יומני התרסקות וצילומי מסך כמו פריטים לניתוח לאחר-בונות.

קידום עתידי של ההגדרה שלך

המערכת האקולוגית של React Native מתפתחת במהירות, וכלים מתבוללים עוקבים אחרי ה-Hermes, מנוע JavaScript מותאם ל- React Native, הוא כעת ברירת המחדל לפרויקטים חדשים.ה ⁇ של Flipper הוא כל הזמן שיפור, והצוות של Flipper מוסיף תכונות כמו יבוא מסד נתונים ובקשת רשת ללעג.בינתיים, הכלי של Devtools עומד מחוספס ביתרונות של תוסף ה-Pupperin.

(הופנה מהדף הרשמי של ה-FLT:0) React Native Debugging Documents: 1 (FLT) (בשיתוף פעולה) , בדוק את אתר האינטרנט הרשמי של FLT:2Flipper 3 עבור תוספים חדשים ושיפורים.

על ידי שליטה בכלים כמו Chrome Devtools, React Native Debugger, ו Flipper, ועל ידי אימוץ חשיבה ניתוק פרואקטיבי, אתה יכול לקצר באופן דרמטי את מחזורי הפיתוח שלך לייצר יישומים אינדיאנים חזקים יותר. Debugging הוא לא רק על תיקון באגים - זה תרגול חיוני כי מחדד את ההבנה שלך של המסגרת ומוביל לקוד נקי יותר, יותר חזק יותר.