Посмотрите, как вы повысите производительность своего реагирующего нативного приложения, сократите время запуска, уменьшите размер пакета и использование памяти.
Ключевые моменты -
- Гермес
- Избегайте повторного рендеринга с помощью useMemo
- Кэшировать изображения
- Используйте nativeDriver с анимированной библиотекой
- Управление состоянием с помощью Redux / MobX / Apollo
- Удалить журнал консоли
- Оптимизировать размер приложения для Android
1. Гермес
Hermes - это движок JavaScript с открытым исходным кодом, оптимизированный для React Native. Интеграция Hermes помогает сократить время запуска, уменьшить использование памяти и уменьшить размер приложения.
С Hermes ваше приложение будет запускаться с двукратной скоростью, использование памяти уменьшится до 30%, размер пакета приложений Android уменьшится на 30%, производительность приложения iOS повысится.
Посмотрим, как интегрировать Гермес. Гермес поддерживает поддержку iOS после версии 0.64. Поэтому не забудьте обновить свое приложение с помощью React Native Upgrade Helper.
Включение Гермеса -
Android -
Добавьте следующую строку кода в android / app / build.gradle
Если вы используете ProGuard, добавьте следующие правила в proguard-rules.pro:
Очистите сборку
iOS -
Отредактируйте файл ios / Podfile с помощью следующих строк кода -
Установите модуль Hermes
Вот и все. Теперь создайте свою сборку для iOS и Android и посмотрите скорость запуска приложений, использование памяти и, в частности, размер пакета.
Связанная статья - Реагировать на чистую архитектуру
2. Избегайте повторного рендеринга с помощью useMemo.
Хуки useMemo помогают разработчикам избежать повторного рендеринга дочерних компонентов для повышения производительности приложения React. useMemo используется для обработки мемоизации, то есть, если какой-либо компонент получает одни и те же реквизиты более одного раза, он будет использовать ранее кэшированные реквизиты и отображать представление JSX и возвращать компонент.
В приведенном ниже примере я взял FlatList и Button. В первый раз FlatList отображает идеально. Теперь, когда пользователь нажимает кнопку, новый setCount обновляет переменную состояния и весь компонент перезагружается с помощью FlatList, даже если значения не обновляются в массиве. Чтобы избежать этого, я обернул FlatListItem (UseMemoListItem) с помощью useMemo, поэтому useMemo проверяет, есть ли какие-либо изменения в реквизитах, тогда только он будет отображать JSX, иначе он вернет рендеринг и вернет предыдущие реквизиты представления.
Связанная статья - Пошаговая интеграция React Hooks
3. Кэшировать изображения
React Native Компонент изображения позволяет разработчикам отображать изображения в приложении, но есть несколько проблем, таких как -
- Номер рендеринга изображения (список продуктов - приложение для электронной торговли)
- Низкая производительность при кэшировании загрузки изображений
- Изображение мерцает
Чтобы решить эту проблему, React Native поддерживает встроенное кеширование для iOS путем включения следующих строк кода.
Но что делать для Android, есть популярная сторонняя библиотека с именем react-native-fast-image, которая идеально подходит для iOS и Android. Используя Fast Image, вы можете предоставить пользователям приложений быстрый рендеринг изображений, механизм кеширования и многое другое.
4. Используйте nativeDriver с анимированной библиотекой.
Мы используем анимацию в нашем приложении, но иногда она не работает должным образом, что влияет на производительность визуализации приложения. Чтобы избежать мерцания и запустить плавную анимацию, используйте useNativeDriver, который отправляет анимацию в собственный мост перед запуском анимации на компоненте. Это помогает выполнять анимацию в отдельном экземпляре javascript, что приводит к более плавной анимации.
Интегрировать очень просто - useNativeDriver: true.
5. Управление состоянием с помощью Redux / MobX / Apollo
Во многих случаях требуется управлять данными локально, что означает кэширование данных, которые сразу отображаются пользователю без прерывания всякий раз, когда пользователь возвращается в приложение. Мы используем AsyncStorage, локальное хранилище базы данных для хранения данных, и когда пользователь вернется в следующий раз / откроет приложение в следующий раз, мы извлекаем данные и сохраняем их в глобальных переменных для доступа в любом месте приложения.
Чтобы управлять этим на различных экранах и сохранять данные в различных массивах, объект Prefer Popular State Management Library, такой как Redux, Redux Rematch, MobX и Apollo. Эти библиотеки будут хранилищем | чесотка | получать данные для вас, и вы можете легко получить доступ ко всему приложению без каких-либо перерывов.
Связанная статья - Состояние дерева состояний MobX - Библиотека управления
6. Удалить журнал консоли.
Все мы используем console.log («Hello KPITENG!») Для отладки приложений. При развертывании приложения, если мы сохраним console.log (), это создаст проблемы с производительностью из-за потока javascript.
Чтобы удалить console.log в производственной среде, выполните простую установку и настройку.
Теперь измените файл .babelrc, чтобы удалить операторы консоли, как показано ниже:
7. Оптимизировать размер приложения для Android
Приложения для Android React Native содержат -
- Такие ресурсы, как изображения, шрифты и т. Д.
- Четыре разных двоичных файла, скомпилированных для разных архитектур ЦП
- Пакет Javascript с бизнес-логикой
- Другие встроенные файлы
Пока вы создаете приложение, оно объединит все это и создаст для вас двоичный файл. Чтобы оптимизировать сборку Android двоичного размера в React Native, добавив строку ниже
Обновите следующую строку в android / app / build.gradle
Если вы хотите извлечь четыре разных двоичных файла в соответствии с архитектурой вашего процессора, тогда
Спасибо за чтение блога!