Цивільно-імперські послуги; структурне будівництво
Реалізація лази навантажень у React рідних для показників продуктивності
Table of Contents
Розуміння завантаження лази в React рідних
React Native став основою для кросплатформного мобільного розвитку, що дозволяє розробникам побудувати додатки на рівні рідного рівня з JavaScript та React. Як масштаби додатків, продуктивність пляшечок часто виникають, особливо під час початкового навантаження. Однією з найбільш ефективних стратегій для зменшення цих питань є лази завантаження]. Ця техніка зашифровує завантаження компонентів, екранів та активів, поки вони дійсно потрібні, зменшуючи час запуску програми та пам'ять. У цьому розширеному посібнику ми глибоко запроваджуємо на реалізацію завантажувального навантаження в React Native, досліджуємо всі основні візерунки для розширених інтеграцій з навігацією та зображенням.
Що таке Лази Завантаження?
Завантажувальний верстат – це шаблон дизайну, який переносить ініціацію об’єкта, компонента або ресурсу до моменту, коли він необхідний. В контексті React Native це означає, що екран або компонент не завантажується і додає доки користувач навігацію на нього або його видимість стає незмінним. Основні цілі:
- Faster initial рендер] – Додаток запускає лише необхідні компоненти, тому користувач бачить вміст скороченим.
- Використання пам'яті – Невикористані компоненти не зберігаються в пам'яті.
- Покращена чуйність] – Основна нитка не заблокована важкими імпортами під час запуску.
У React Native, завантаження мереж зазвичай здійснюється через динамічні імпорти за допомогою та , або через бібліотеки-специфічні рішення, такі як для завантаження лівих ліній на екрані.
Переваги завантаження Лази в React Native
Прийняти завантажувальні роботи, що дає широкий спектр покращень продуктивності:
- Розгортання початкового пакету – Код розщеплення дозволяє розбити JavaScript на менші шматки, що навантажуються на вимогу. Це критично, тому що React Native програми відправляють єдиний JavaScript-пакет, який повинен бути припаркований і виконаний на запуску.
- ]Сточний час до інтерактивного (TTI)] – Додаток стає можливим раніше, тому що великі обчислення та імпорт великих бібліотек відзначаються.
- Btter life] – Ресурси Idle не завантажуються, зменшуючи використання процесора та консервує акумулятор.
- Проведення в оренду – Завантажування Лази заохочує модульний код, що робить базу даних, простіше орієнтуватися і перевірити.
Хоча ці переваги є універсальними, завантажуючи лази особливо цінні для додатків з багатьма екранами, складними діаграмами, багатими медіа або сторонніми SDKs.
Реалізація лази навантажування з React.lazy і Suspense
Реакція Native підтримує і з версії 0.62. Однак є нюанси, що порівнюються з React для веб-сторінки. Пройдемо бетонну реалізацію.
Базовий набір
Для підтримки динамічного імпорту направляється динамічний імпорт з версії 0.59.
Крок 1 - Затишне навантаження компонента
Створіть важку складову, наприклад, складну діаграму або великий список, і імпортуйте його за допомогою :
]]
Крок 2 – Обгортання з попелицею
Забезпечити зворотний зв'язок UI, поки компонент завантажується:
]]
Важливий хорват для реативної віспи
На сайті працює безшовно з React.lazy. У React Native є доступним, але не всі типи компонентів працюють ідеально в межах нього, особливо компоненти класу спадщини або компоненти, які спираються на для побічних ефектів. Завжди перевірте ваші мережива-завантажені компоненти на реальних пристроях. Для більшості функціональних компонентів використовують гачки, він працює відмінно.
Розширені методи завантаження Лази
Навантаження за допомогою React-навігації
Найбільш поширеним способом використання для завантаження мереж у мобільних додатках є відстрочення завантаження екрану. React Navigation, де фактична бібліотека навігації, підтримує цей шаблон з коробки через його пропа та динамічна .
Приклад з React Navigation 6:
]
Ви можете додатково оптимізувати за допомогою prefetching]: коли користувач подає за вкладку або навігує на екран, ви можете запустити завантаження наступного екрана заздалегідь за допомогою або керівництва дзвінки.
Затишне завантаження зображень
Зображення часто є найсвіжіші активи в мобільному додатку. Завантажувальні зображення за допомогою Lazy означає відстрочення їх завантаження, поки вони знаходяться біля порту перегляду. Ви можете досягти цього за допомогою бібліотек, таких як react-native-fast-image] або expo-image, як з яких підтримують затискання та кешування з коробки. Для індивідуального рішення використовуйте візерунки через або проп.
Приклад з FlatList до мережного навантаження видимих рядків тільки:
]
Цей підхід забезпечує, що тільки елементи у вікні, що відображаються, а також віртуальні елементи.
Код Spliting з React.lazy та React Навігація екранів
Для великих додатків ви також можете розбити JavaScript-пакет на екран за допомогою React.lazy у поєднанні з функцією React Navigation з React Navigation v5. Однак зауважити, що React Navigation v6 використовує компонент безпосередньо, тому ви можете обгорнути його за допомогою lazy, як показано вище.
Кращі практики для завантаження Лази в React Native
- Визначте, що для завантаження лазень] – Профіль вашого додатку для пошуку найсвіжіших компонентів. Зазвичай це діаграми, карти, відеоплеєри, складні форми та екрани користувачів рідко відвідувані.
- Provide значущий падін] – Використовуйте екрани скелета, шіммерні ефекти, або показники активності, так що користувач знає щось відбувається.
- Combine з кешуванням] – Після завантаження компонента, враховуйте, зберігаючи її пам'ять за допомогою державного управління (наприклад, Redux, Recoil) або , щоб уникнути перенагріву.
- ]Накладні левинні компоненти] – Наклад динамічного імпорту та суспенса може зважити переваги для дуже малих компонентів (наприклад, один ]).
- Test on low-end devices – Продуктивність набирає найбільш помітні на пристроях з обмеженою оперативністю та повільними процесорами. Утеплені умови.
- Усе Metro’s inline вимагає – Для старших проектів, які не можуть використовувати динамічні імпорти, Metro підтримує в налаштуваннях Metro для завантаження модуля. Це нижній рівень, але ефективний.
Загальні Питви та Як уникнути
1. Залізо навантаження
Завантажувати будь-який компонент може призвести до стрибків досвіду користувача з занадто багато завантаження шпинерів. Зосереджувати екрани та дорогі компоненти тільки.
2. Затишне навантаження під час переходів
Якщо ви завантажте екран, який користувач навігає через перехід на стека або вкладку, стан завантаження може викликати затримки за допомогою банлінга. Розглянемо припуск, коли попередній екран монтується або коли користувач захопиться кнопкою.
3. Не подавати помилки
Динаміка імпорту можуть бути недійсними через мережеві проблеми або внести корупцію. Використовуйте , щоб зловити помилки в попаданні призупинення:
]
4. Несприятливі платформи Behavior Across
iOS and Android може оброблятися . Завжди перевірте на обох платформах.
Вимірювання продуктивності та моніторинг
Перед розгортанням лази завантаження, встановлення базових метрій за допомогою інструментів Реакція НІКЕРЦІЙНОГО монітора (доступно через меню розробника), Flipper, або React DevTools. Трек:::
- Час початкового рендеру (TTIR)
- Час інтерактивного (TTI)
- Використання пам'яті до і після завантаження лози
- Розмір бензю за курку
Після виконання повторно ознайомтеся з перевагами для кількісного визначення оновлень. У багатьох реальних додатках React Native (наприклад, Магазин ), завантажте зміщений час запуску на більш ніж 40%.
Зовнішні ресурси та подальше читання
- React Native Офіційні Документи – Оптимізація завантаження JavaScript
- Реакція — навантажувач екрану
- Callstack Blog – Код Розділення в React Native[
Висновок
Завантажування Лази не є срібною кулею, але при нанесенні правильно, це один з найпотужніших інструментів в інструментарію продуктивності React Native Developer. Знявши навантаження неоцінних компонентів, зображень та екранів, можна різко відрізати початкові терміни навантаження, зменшити тиск пам'яті і доставити шовковисно-смоктний досвід для ваших користувачів. Починайте з найсвіжіших відбійників у додатку, як правило, бризки, складні діаграми або рідко відвідані таблички, і поступово подовжуйте відчувати лази завантаження на інші частини. Пам'ятайте, щоб вимірювати, перевірити на реальні пристрої, і забезпечити витончені недоліки. З обережною реалізацією, буде зробити застіше