Airbnb недавно опубликовал серию статей на Medium, в которых подробно описывается весь путь от выбора до отказа от Airbnb и React Native.
- React Native at Airbnb
- The Technology
- Building a Cross-Platform Mobile Team
- Making a Decision on React Native
- What's Next for Mobile
Для студентов, которые не читают много слов, вы можете просто прочитать мое резюме ниже.
Почему стоит выбрать React Native в первую очередь
Ограниченная команда разработчиков не может удовлетворить растущие потребности бизнеса
Чего ожидать от React Native
- быстрое развитие
- гарантия качества
- Напишите один раз, поделитесь на нескольких платформах
- Улучшить опыт разработки
что нам не хватает
- Кросс-платформенный, на самом деле более 95% общей скорости кода.
- Единый DSL. Различные реализации также сделаны в соответствии с платформой.
- Реакция — это хорошо.составной,простой жизненный цикл,декларативный
- Скорость итерации разработки (горячее обновлениеhot-reloading)
- Наши инвестиции в экологическую инфраструктуру РН.
- Производительность, RN работает очень плавно на большинстве страниц. (Есть проблемы с производительностью?shouldComponentUpdate, removeClippedSubviews, Redux, чтобы узнать. )
- Reduxэто хорошо. Тоже довольно многословная вещь.
- Мост с Native может легко инкапсулировать существующие библиотеки Native.
- статический анализ, отESLintприбытьprettier
- Библиотека анимации RN хороша.
- Экосистема JS/React с открытым исходным кодом.
- Flexbox
- Делитесь кодом с веб-платформами.
расстраивает нас
- С точки зрения зрелости и стабильности RN не так нативна, как iOS и Android.
- Из-за ошибок в RN иногда нам приходится поддерживать один из наших собственныхотделение РН.
- В JS отсутствует система типов, Flow слишком строг, а TS имеет проблемы с интеграцией в существующие проекты.
- Рефакторинг, рефакторинг невозможно рефакторить, и нет никакой системы типов, только попытки сделать статический анализ.
- Несоответствие JavaScriptCore, и что еще хуже, ему уже 8102 года, а RN (Android) все еще приноситАО не поддерживает ES 6
- Библиотеки с открытым исходным кодом RN различаются по качеству. Например, обычная библиотека на iOS может иметь непредвиденные ошибки на Android (потому что автор может быть знаком только с iOS и RN, а не с Android)
- Иногда приходится начинать с нуля, потому что многие библиотеки в базовой структуре еще не имеют оболочек RN.
- Производительность библиотеки мониторинга сбоев на RN не особо специфична, и скачок в стеке ошибок RN + Native нужно оспаривать?
- Из-за слабого типа JS несоответствие типа Native Bridge между Native и JS может легко вызвать ошибки. (Извините, что не сгенерировал код связи с TS раньше.)
- Время загрузки, инициализация среды RN занимает секунды даже на высокопроизводительных компьютерах.
- Время рендеринга вновь открытой страницы составляет около 0,4 секунды, первый рендеринг страницы требует времени.
- Размер приложения. Добавьте хотя бы 12M.
- Недоступно на Android до сих пор64-битная поддержка.
- Жесты, API-интерфейсы жестов iOS и Android очень разные, но радостные новостиreact-native-gesture-handlerВышла версия 1.0.
- Длинные списки, хотя команда RN усердно работала, из-за асинхронного механизма связи RN плавный рендеринг длинных списков все еще не решен.
- Обновление React Native — это яма.
- Доступность в RN — большая дыра.
- осталось немногостранная ошибка, пока не исправлено.
-
SavedInstanceState
Кросс-процесс на Androidяма.
Не проблема с техническими проблемами
- Чтобы хорошо использовать RN, вы должны быть знакомы как с iOS, так и с Android, и, конечно же, с самой RN, что создает больше проблем для нас, инженеров.
- Управление коллективом, разделение обязанностей.
- Документация по RN и сопутствующие ресурсы не так богаты, как iOS и Android.