קוראים כמוך עוזרים לתמוך ב-MUO. כאשר אתה מבצע רכישה באמצעות קישורים באתר שלנו, אנו עשויים להרוויח עמלת שותף.
React Native 0.70 יצא, והרמס הוא מנוע JavaScript החדש המוגדר כברירת מחדל המשלוח עם עדכון זה. הנה למה לצפות מהרמס וכמה מהתכונות שישפיעו על הביצועים של אפליקציית React Native שלך.
מה זה הרמס?
Hermes הוא מנוע JavaScript בקוד פתוח המייעל את הביצועים במהלך iOS ואנדרואיד יישום מופעל על ידי הידור מראש של קוד JavaScript לקוד בתים יעיל וצמצום היישום שימוש בזיכרון.
עדכון גרסאות מקוריות ישנות יותר של React כדי לתמוך בהרמס
ביישומי React Native הפועלים על 0.70 יופעל הרמס כברירת מחדל. עבור יישומי React Native ישנים יותר, מבנה של הרמס נשלח עם כל גרסה של React Native החל מגרסה 0.60.4 עבור Android build וגרסה 0.64.0 עבור iOS. הגרסאות התואמות מבטלות את הסיכון לאי התאמה של תלות באפליקציית React Native שלך.
כדי להפעיל את Hermes בגרסאות הישנות יותר של React Native, תצטרך להוסיף תצורה כלשהי ליישומי Android ו- iOS שלך.
ב-Android, ערוך את שלך android/app/build.gradle קוֹבֶץ:
project.ext.react = [
entryFile: "index.js",
אפשר להרמס: נָכוֹן// נקה ובנה מחדש אם משתנה
]
ב-iOS, אתה מבצע את השינויים הבאים שלך ios/Podfile:
use_react_native!(
:נתיב => config[:reactNativePath],
:hermes_enabled => נָכוֹן
)
iOS דורשת ממך להתקין תרמילים של הרמס לאחר קביעת הגדרות.
הפעל את הפקודה הבאה כדי להתקין את הפודים:
CD ios && התקנת פוד
הפעלת הרמס עם אקספו
אתה יכול גם להשתמש במנוע Hermes עבור יישומי React Native שנבנו או פועלים באמצעות Expo. ספריית Expo תומכת ב-Hermes מגרסה 42 של SDK ב-Android ו-SDK בגרסה 43 ב-iOS ועד לגרסה הנוכחית 0.70. חשוב לציין שיישומים עצמאיים אינם יכולים להריץ את Hermes אלא אם כן נבנו באמצעות Expo Application Services Build.
כדי להפעיל את הרמס ביישום React Native, ערוך את שלך app.json קוֹבֶץ:
{
"תערוכה": {
"jsEngine": "הרמס"
}
}
כעת האפליקציה שלך שנבנתה עם Expo Application Services תאפשר להרמס כמנוע JavaScript שלה.
מיטוב ביצועי הרמס עבור אפליקציות מקוריות של React
רוב מנועי JavaScript מנתחים את כל קוד המקור של JavaScript באמצעות מערכת הידור JIT (Just in Time). מערכת JIT מאטה את הביצוע מכיוון שהמכשיר שלך חייב להמתין לסיום תהליך ההידור כולו. הרמס משתמש בגישת קומפילציה מראש (AOT), ומעבירה את רוב עבודת מנוע JavaScript הכבדה לבניית זמן.
הרמס משפיע בעיקר על שלושה מדדים של ביצועי אפליקציה: האפליקציה TTI (Time to Interactive), גודל בינארי ושימוש בזיכרון.
זמן לאינטראקטיב
ה-TTI הוא הזמן שלוקח לאפליקציה לטעון ולתמוך באינטראקציה של משתמשים כמו גלילה או הקלדה. Hermes משפר את ה-TTI הממוצע עבור יישומי React Native בהשוואה למנועי JavaScript אחרים.
ההפחתה הזו ב-TTI נובעת מכך שהרמס לא מריץ מהדר JIT.
גודל בינארי
הגודל הבינארי הוא הגודל של יישום React Native המצורף. אפליקציות אנדרואיד משתמשות ב- פורמט קובץ APK, בעוד אפליקציות iOS משתמשות בפורמט שאפל קוראת ל-IPA. השימוש ב-Hermes מקטין באופן משמעותי את גודל האפליקציה במכשירי אנדרואיד.
שימוש בזיכרון
שימוש בזיכרון הוא מדד קריטי נוסף למיטוב ביישומים. חווית המשתמש של אפליקציה תושפע לרעה אם היא משתמשת ביותר מדי זיכרון. הרמס מיישמת מערכת Garbage Collector המווסתת את השימוש בזיכרון לפי דרישה, ומבטיחה שאפליקציה משתמשת רק בשטח הזיכרון הדרוש בזמן ריצה.
Hermes מגיע עם חוויה חדשה לאיתור באגים ביישומי React Native הפועלים על אמולטור, סימולטור או מכשיר פיזי באמצעות Expo. Hermes תומך באיתור באגים ביישומי React Native באמצעות פרוטוקול Inspector של Chrome DevTools. אתה לא צריך לבלבל את זה עם מסורתי איתור באגים ב-JavaScript באמצעות קונסולת הדפדפן.
כדי להגדיר את Chrome לנפות באגים ביישומי Hermes, בצע את השלבים הבאים.
- נווט אל chrome://inspect בתוך דפדפן Chrome שלך.
- הקלק על ה הגדר לַחְצָן.
- בתוך המודאל שעל המסך, הזן את כתובת השרת עבור מכלול המטרו שמריץ את אפליקציית React Native שלך ולחץ בוצע.
כעת תוכל לנפות באגים ביישום React Native שלך באמצעות קישור בדיקת היעד של הרמס.
מדוע הרמס מותאם ל-React Native בלבד
הביצועים האופטימליים של הרמס כמנוע React Native JavaScript נובעים בחלקם מסביבת זמן הריצה שלו. ב-React Native, אתה מאגד את כל קוד ה-JavaScript בתוך סביבת האפליקציה. מערכת זו הופכת קוד בתים למשלוח ליעיל.
גורם נוסף שיש לקחת בחשבון הוא כמות העבודה שנעשתה במהלך הידור של JavaScript. הרמס מנהלת את אינטראקציית המשתמש התכופה הצפויה ליישומים ניידים תוך הימנעות מאופטימיזציה אגרסיבית של קוד בתים. מנוע JavaScript מהדר JIT לא יבצע משימות בדרך זו.