«Перевод» Как выбрать Flutter и React Native в 2021 году | Технический обзор

Flutter React Native
«Перевод» Как выбрать Flutter и React Native в 2021 году | Технический обзор

Привет всем, яЛуожу из @Da Ning

Эта статья была впервые опубликована вОфициальный сайт Луожу

Оригинальная ссылка:Woohoo. ROI сына дроида это все. com/blog/appendix Я нервничаю...

Автор оригинала: дроиды на роидах

Вычитка:Alex

Эта статья разрешает эксклюзивное использование общедоступной учетной записи сообщества разработчиков Nuggets, включая, помимо прочего, редактирование, пометку оригинальности и другие права.

Заказ переводчика

React Native сравнивают с Flutter с момента его создания, и представление о том, насколько интенсивна эта битва за кросс-конечный трон, можно увидеть из более чем 7 миллионов результатов поиска Google. Эта статья не похожа на название, которое я перевел, но это более объективная оценка двух и того, как выбрать между фактическими потребностями.

предисловие

Хотите быстрее разработать мобильное приложение? Вы хотите снизить затраты на разработку за счет кроссплатформенной технологии? Вы все еще беспокоитесь о том, что не знаете, какую технологию выбрать?

Эта статья развеет ваше беспокойство Мы сравниваем лучшие кросс-энд решения: Flutter и React Native и помогаем вам решить, какой фреймворк больше подходит для нужд вашего приложения с точки зрения владельца приложения.

почему мы написали эту статью

Кроссплатформенные решения становятся все более популярными. Flutter и React Native — два ведущих игрока в отрасли, ноDroids On Roids, при создании коммерческих приложений для партнеров мы подберем наиболее подходящее решение в соответствии с конкретными потребностями: это может быть нативное, Flutter или React Native.

Тем не менее, владельцы бизнеса всегда хотят знать ответы на несколько ключевых вопросов:

  • Какой фреймворк лучше всего подходит для моего проекта?
  • Какой вариант быстрее всего выведет мое приложение на рынок?
  • Могу ли я гарантировать, что мое приложение стабильно и удобно для пользователей?
  • еслиИдеальный дизайнмой первый принцип какое решение я должен принцип?

Мы написали эту статью, чтобы обобщить ответы, которыми поделились с нашими партнерами, чтобы вы тоже могли извлечь из нее пользу.

Мы надеемся, что эта статья помогла вам принять взвешенное и рациональное решение при выборе межсетевого решения для вашего приложения.

об авторе

Глубокое сравнение этих двух технологий требует компетентности мастера, имеющего определенный уровень и опыт работы с Flutter и React Native.

Поэтому мы попросили двух разработчиков Droids On Roids выполнить эту задачу:

  • Бартош — веб-разработчик и разработчик React Native
  • Дамиан — разработчик iOS и Flutter (Roadmap for Flutter Developers in 2021автор - пиар приветствуется)

Два больших парня используют Flutter и React Native для ежедневного создания коммерческих приложений для клиентов. Поэтому их обмен включает в себя не только теорию, но и многолетний опыт разработки.

Мы также сверили наше понимание с популярными статьями в сообществе и ссылались на эти ресурсы, чтобы ответить на вопросы. Вы можете найти полный список литературы в конце этой статьи.

Flutter против React Native: обзор

Flutter React Native
Введение Flutter — это набор для разработки программного обеспечения для мобильных приложений с открытым исходным кодом, разработанный Google для разработки приложений для Android, iOS, Windows, Mac, Linux, Google Fuchsia. React Native основан на React.js, цель состоит в том, чтобы позволить разработчикам использовать модель декларативного программирования JavaScript и React.js для разработки программ, которые работают на нескольких платформах.
официальный релиз Декабрь 2018 г., Конференция Google I/O. Март 2015, Конференция F8
Производитель Google Фейсбук
Это бесплатно и с открытым исходным кодом да да
Язык программирования Dart JavaScript
Популярность Github115000 звезд (март 2021 г.) Github93 000 звезд (март 2021 г.)
Горячая перезагрузка да да
собственная производительность превосходно превосходно
UI Приложения Flutter выглядят так же хорошо, как и старые версии на последней версии ОС. Поскольку у них только одна кодовая база, эти приложенияiOSа такжеAndroidВнешний вид и поведение похожи, но благодаря виджетам Material Design и Cupertino они также могут имитировать дизайн самой платформы. Как это делается? Flutter включает в себя два набора виджетов, которые соответствуют определенному языку дизайна: виджеты Material Design реализуют одноименный язык дизайна Google, а виджеты Cupertino эмулируют дизайн iOS от Apple. Это означает, что ваше приложение Flutter будет выглядеть и вести себя естественно на каждой платформе, чтобы имитировать их собственные компоненты. Компоненты приложения выглядят так же, как собственные компоненты (например, кнопка выглядит как собственная кнопка iOS на устройстве iOS, а также на устройстве Android). Это подтверждается тем фактом, что React Native использует нативные компоненты под капотом, и после любого обновления пользовательского интерфейса ОС компоненты вашего приложения будут немедленно обновлены соответствующим образом. Тем не менее, это может сломать пользовательский интерфейс приложения, но это случается редко. Если вы хотите, чтобы ваше приложение выглядело почти одинаково на разных платформах, а также в более старых версиях ОС (как это делает Flutter), вам необходимо использовать стороннюю библиотеку компонентов (например,react-native-paper). Они позволят вам использовать компоненты Material Design вместо собственных компонентов.
Один двор и много концов Недавно была выпущена официальная версия Flutter 2. В качестве крупного обновления Flutter разработчики, использующие Flutter 2, могут использовать один и тот же код для публикации приложений, разработанных с помощью Flutter, для пяти операционных систем:iOS,Android,Windows,macOSа такжеLinux; и бегом кChrome,Firefox,SafariилиEdgeВ веб-версии других браузеров Flutter можно встраивать даже в автомобили, телевизоры и умную бытовую технику. iOS, Android — но есть сторонние библиотеки, которые позволяют создавать приложения для iOS, Android, веб-приложений и Windows 10 с помощью одного набора кода. Вы также можете вытащить общий код мобильных, десктопных и веб-приложений в отдельный репозиторий, рассматривать его как отдельный проект, а затем внедрять его так же, как другую зависимость. Это позволяет разработчикам сосредоточиться на написании кода для конкретной платформы, не беспокоясь о совместимости с другой зависимостью.
Известные случаи Xianyu из Alibaba, приложение Hamilton Musical от Hamilton, приложение Google Ads Instagram, Facebook, Facebook Ads, Skype, Tesla
Цикл разработки Обычно намного быстрее, чем нативная разработка. Возможно, так же быстро, как развивается Flutter. Но React Native использует мосты и нативные компоненты, поэтому для каждой платформы может потребоваться индивидуальная оптимизация — у Flutter на основе виджетов этой проблемы нет. Это может увеличить цикл разработки приложения с React Native.
Конкурентные преимущества Интерфейс, разработанный Flutter, красив благодаря богатым виджетам, быстро растущему сообществу и популярности, отличной документации, предоставленной командой Flutter (что упрощает разработку с Flutter), улучшению Flutter для Интернета, одному коду и множеству терминалов. потенциал для кросс-платформенной разработки; трудно сократить циклы разработки Стабильность (более 5 лет на рынке); множество историй успеха с использованием React Native и известных игроков рынка; зрелое, большое сообщество; простая в освоении технология; множество руководств и библиотек, которые позволят вам быстро и легко разрабатывать; код может быть легко повторно использован между веб-приложениями и настольными приложениями.
Когда не лучший выбор Если ваше приложение должно поддерживать 3D Touch (в настоящее время Flutter не поддерживает 3D, но это находится в долгосрочной дорожной карте команды Flutter), дизайн вашего приложения зависит от платформы; ваше приложение должно взаимодействовать с ОС несколько раз. или вам нужны редкие малоизвестные нативные библиотеки; вам нужен минималистичный пользовательский интерфейс, но интенсивное использование аппаратного обеспечения телефона (например, приложения, которые воспроизводят музыку или просто фотографируют); вы хотите создать мгновенное приложение (небольшое приложение), тогда лучше выбрать разработка нативных приложений. Для получения дополнительной информации об этих ситуациях, пожалуйста, нажмитездесь>> Если вашему приложению необходимо выполнять менее распространенные задачи или сверхспецифические задачи в фоновом режиме (например, вычисления); вам нужна настраиваемая связь через Bluetooth (реализация с помощью React Native может быть сложной); если вы хотите разрабатывать приложения как для iOS, так и для Android и вы знаете JavaScript, тогда вы можете перейти на React Native, но если вы просто хотите разрабатывать приложения для Android, лучше позволить нативной команде сделать это. Если он соответствует вышеизложенному, лучше выбрать нативное приложение.

Представляем Flutter и React Native

Во-первых, давайте рассмотрим основные (но важные) детали Flutter и React Native.

Что такое флаттер?

Flutter — это портативный набор инструментов пользовательского интерфейса. Другими словами, это комплексный комплект для разработки прикладного программного обеспечения (SDK), включающий виджеты и инструменты.

Сценарии применения флаттера

Flutter поддерживает кроссплатформенную разработку.

Он предоставляет разработчикам простой способ создания мобильных приложений (iOS, Android),WebСоздавайте и развертывайте визуально привлекательные приложения, скомпилированные в собственном коде, для настольных компьютеров: набор кода выполняется на многих сторонах, так называемая однократная запись везде.

осторожность:

  • API все еще находится в стадии разработки при разработке настольного приложения с Flutter.. Google работает над расширением Flutter для поддержки рабочего стола в качестве целевой среды, позволяя разработчикам создавать приложения для macOS, Windows и Linux с использованием этой технологии.

    Flutter 2 имеет SDK стабильной платформы, пожалуйста, проверьте подробностиВыпущен Flutter 2.0 | Следующее поколение Flutter, созданное для Интернета, мобильных и настольных компьютеров

  • Flutter for Web — это совместимая с кодом реализация Flutter, которая позволяет компилировать существующий код Flutter, написанный на Dart, в клиентскую часть, которую можно встроить в браузер и развернуть на любом веб-сервере. Вы можете использовать все функции Flutter без плагинов для браузера.

Еще о флаттере:

  • Бесплатный и с открытым исходным кодом
  • это основано наDart- Быстрый объектно-ориентированный язык программирования. Dart относительно нов и прост в освоении, особенно для опытных разработчиков, знакомых с Java и C#.
  • Архитектура основана на очень популярном реактивном программировании (в том же стиле, что и React).
  • Он предоставляет собственные элементы управления, полученные из собственного высокопроизводительного механизма рендеринга, которые являются быстрыми, привлекательными и настраиваемыми.
  • Благодаря опыту работы с элементами управления приложения Flutter выглядят и работают великолепно (хотя вы все равно можете создавать свои собственные).индивидуальный дизайн приложения, используя простые в использовании компоненты пользовательского интерфейса, соответствующие рекомендациям для конкретной платформы)

Кто создал проект Flutter

один изGoogleКоманда создала проект Flutter.

Но как проект с открытым исходным кодом и Google, и сообщество Flutter вносят свой вклад в разработку Flutter.

Насколько взрослый Флаттер?

Краткая история Флаттера:

  • Февраль 2018 г., Mobile World Congress — Flutter выпускает первую бета-версию
  • Апрель 2018 г., Google I/O — выпуск бета-версии 2 Flutter.
  • Май 2018 г., Google I/O – выпущена бета-версия 3 Flutter.
    • Флаттер входитGitHub Top 100
  • Июнь 2018 г. — выпущен Flutter Preview 1
  • Сентябрь 2018 г. — выпуск Flutter Preview 2
  • Ноябрь 2018 г. — выпуск Dart 2.1.
  • Декабрь 2018 г., Google I/O — выпуск Flutter 1.0.
    • Flutter считается вехой стабильной и готовой к производству технологии с декабря 2018 года.
  • Февраль 2019 г., Mobile World Congress — выпущен Flutter 1.2
  • Май 2019, Всемирный мобильный конгресс
    • Вышел флаттер 1.5
    • Flutter for WebПредварительный выпуск
    • Выпущен Дарт 2.3
  • июль 2019,Вышел флаттер 1.7
  • сентябрь 2019 г.,Вышел флаттер 1.9

Как видите, Google быстро перешел от бета-версии Flutter к стабильной версии Flutter 1.0.

Более того, с тех пор как был выпущен Flutter 1.0, команда Flutter не гордилась им. Они активно работают над тем, чтобы сделать инструментарий более мощным и гибким, уделяя приоритетное внимание улучшениям стабильности, производительности и качества.

Кроме того, Flutter 1.5 включает сотни изменений в ответ на отзывы разработчиков.

Flutter теперь входит в число 20 самых активных репозиториев на GitHub (№16 по состоянию на 11 декабря 2019 г.), что свидетельствует о том, что сообщество разработчиков использует его и продолжает вносить свой вклад в его улучшения.

В целом, Flutter все еще является новой технологией.

Однако, учитывая темпы постоянного совершенствования Flutter и его взрывную популярность, можно с уверенностью сказать, что с возрастом он стал очень стабильным и зрелым. Тем более после выхода Flter 2.0.

Судя по темпам разработки, мы ожидаем, что Flutter для Web также стабилизируется в течение 12 месяцев. (На момент публикации он был стабилизирован)

Какие популярные приложения используют Flutter?

  • Приложение Xianyu от Alibaba — Alibaba является одной из крупнейших компаний электронной коммерции в мире.
  • Приложение Hamilton — официальное приложение для бродвейских мюзиклов
  • Google Ads app
  • Reflectly
  • Приложение JD Finance - Компания мужа сестры чая с молоком
  • Topline app by Abbey Road Studios

Что такое React Native?

React Native — это фреймворк для мобильных приложений с открытым исходным кодом, использующий JavaScript.

Сценарии приложений React Native?

React Native подходит для следующих сценариев:

  • Кроссплатформенная разработка
  • Разрабатывайте мобильные приложения с помощью JavaScript
  • Один набор кода для разработки приложений для Android и iOS
  • Используйте тот же дизайн, что и React

осторожность:

  • Использование React NativeСозданное приложение не является мобильным веб-приложением. React Native использует те же основные строительные блоки пользовательского интерфейса, что и обычные приложения для iOS и Android: это означает, что вместо создания приложений на Java, Kotlin или Swift вы используете JavaScript и React для объединения одного и того же кода.
  • React Native разработан с использованием компонентов, аналогичных элементам управления во Flutter.

Для разработки с React NativeВеб-приложения и настольные приложения, желательно с использованием внешней библиотеки.

Кто создал проект React Native?

FacebookСоздан React Native

Реагировать на родную зрелость?

Краткая история React Native:

  • Лето 2013 года, Facebook Hackathon — React Native стартовал как внутренний проект Facebook.
  • Январь 2015 г., конференция React.js — выпуск React Native 1
  • Март 2015, Конференция F8 — официальный запуск React Native.
    • Facebook объявляет React Native как «открытый для использования и доступный на Github».

Подводя итог, можно с уверенностью сказать две вещи: React Native старше Flutter и имеет более широкое сообщество. Не говоря уже о том, что у команды Facebook было достаточно времени, чтобы стабилизировать API и сосредоточиться на устранении всех потенциальных проблем:

  • Lean Core - Уменьшите размер приложения, переместив дополнительные компоненты/функции в отдельные репозитории (чтобы добавить их в приложение при необходимости).
  • TurboModules- для улучшенной обработки нативных модулей
  • React Native Fabric- Рефакторинг слоя пользовательского интерфейса

Какие популярные приложения используют React Native?

Если вы хотите увидеть другие примеры приложений, созданных с помощью React Native, ознакомьтесь сofficial React Native showcase.

Флаттер — сильные и слабые стороны

В этом разделе мы кратко обсудим основные преимущества и недостатки Flutter.

Если вы хотите узнать больше, пожалуйста, проверьтеэта статьяПлюсы и минусы Flutter для владельцев приложений.

✅ Преимущества флаттера

1. Горячая перезагрузка = быстрая разработка

С точки зрения разработчика, Flutter обеспечивает более динамичную и быструю разработку приложений. Это одна из самых хвалебных вещей во Flutter, и каждая ведущая компания по разработке мобильных приложений ценит это.

Разработчики могут вносить изменения в кодовую базу на лету и немедленно отображать их в приложении. Это называетсягорячая перезагрузкаФункциональность, реакция на изменения обычно порядка секунд или даже миллисекунд.

Эта функция помогает командам добавлять функции, исправлять ошибки и сразу же пробовать новые идеи. Кроме того, в сотрудничестве разработчиков и дизайнеров,Горячая перезагрузка очень удобна.

2. Пишите один раз, запускайте много

С Flutter разработчики могут писать только одну кодовую базу для двух приложений — для платформ iOS и Android.

Flutter не зависит от платформы, потому что у него есть собственные виджеты и дизайн, что означает, что вы можете иметь одно и то же приложение на обеих платформах (что так же легко сделать, если вы хотите дифференцировать свои приложения).

В настоящее время Google работает над Flutter для Интернета, с которым вы можете ознакомиться в качестве предварительного просмотра. После запуска единая кодовая база будет охватывать Android, iOS и веб-платформы.

3. До 50% меньше тестов

Предполагая, что у вас есть одно и то же приложение на обеих платформах, процесс обеспечения качества будет быстрее и с меньшим количеством проверок.

Мы пишем примерно на 50 % меньше автоматических тестов, потому что можем создавать одни и те же тесты для запуска на обеих платформах, что снижает потребность в командах контроля качества.

Тем не менее, вам все равно придется запускать ручные тесты на том же уровне, что и нативное программирование, поскольку ваши специалисты по контролю качества должны вручную проверять оба приложения на каждой платформе.

4. Более быстрое приложение

Приложения Flutter работают плавно и не тормозят при быстрой прокрутке.Почему?

Флаттер используетГрафическая библиотека Skia. Таким образом, каждый раз, когда вид меняется, пользовательский интерфейс перерисовывается.

Большая часть работы выполняется на графическом процессоре, поэтому пользовательский интерфейс Flutter плавный и обеспечивает 60 кадров в секунду (кадров в секунду).

Но при разработке необходимо соблюдать осторожность, чтобы не перерисовывать те элементы в представлении, данные которых не изменились.

Перерисовка всего представления, а не только тех элементов, которые были изменены, может повлиять на производительность и скорость приложения, особенно если представление необходимо часто перезагружать, например, в приложении секундомера.

5. Дизайн, который понравится пользователям

Flutter не полагается на нативные системные компоненты. Вместо этого у Flutter есть собственный набор пользовательских виджетов, которые отображаются и управляются графическим движком фреймворка. Пользователи увидят другие компоненты пользовательского интерфейса, отличные от обычных нативных приложений, но это не обязательно является недостатком.

Приложения Flutter имеют особенно удобный интерфейс: Flutter имеет важные преимущества по сравнению с React Native, обусловленные гиперфокусом на визуальных деталях. Flutter был создан для того, чтобы вы могли легко создавать свои собственные оконные виджеты или просто настраивать существующие оконные виджеты.

Не стесняйтесь просматриватьОсновной каталог виджетов; или нажмите на ссылку, чтобы просмотретьMaterial Design widgetsа такжеCupertino widgetsпример.

6. Тот же пользовательский интерфейс даже на старых моделях

Даже новые приложения выглядят одинаково на старых системах iOS или Android, поэтому вам не нужно беспокоиться о поддержке старых устройств.

Android 5.1.1 Android 8.1.0

7. Идеально подходит для MVP

Flutter идеален, если вам нужно создать MVP (минимально жизнеспособный продукт) для вашего приложения (например, в качестве витрины для потенциальных инвесторов), особенно если сроки короткие. Также читайте:

ПроверитьПриложение флаттер-галереи, который содержит демонстрации основных функций, виджетов и виньеток Flutter.

Flutter Galary Flutter Galary Flutter Galary

🔻 Недостатки флаттера

1. Размер сообщества разработчиков

Большинство людей скажут вам: ключевым преимуществом React Native перед Flutter является более зрелое и опытное сообщество разработчиков. Кроме того, с точки зрения языков программирования Dart не так широко используется, как JavaScript, по крайней мере, на данный момент.

На самом деле понятно, что Флаттеру нужно много работать, чтобы называться «братом». Сообществу нужно время, чтобы обучить свою аудиторию и получить больше опыта, а это путь к любому новому молодому инструменту.

Однако мы не считаем это явным недостатком. Также стоит отметить, что сообщество Flutter растет экспоненциально.

Кроме того, наборы для разработки интересны.

осторожность:

  • Stack Overflow TrendsТенденции хэштегов показывают огромный рост интереса разработчиков к Flutter

  • На Udemy их более 50.Курсы флаттера(около 213 000 слушателей курсов)

    еще 35Курсы дартс(Примерно 187 500 участников курса (25 июня 2019 г.))

    React Nativeпримерно столько же — 287 000 студентов на 597 000 курсов

  • У Flutter 115 000 звезд на Github, у React Native — 93 000.

Подводя итог, у Flutter сейчас небольшое неопытное сообщество, а у Dart есть преимущество перед JavaScript.

Тем не менее, текущие тенденции предполагают, что Flutter догонит конкурентов в этом отношении.

2. Библиотеки и поддержка — впечатляет, но все же не так богато, как нативная разработка

Поддержка Flutter со стороны Google впечатляет, но Flutter все еще довольно новый. Это означает, что вы не всегда можете найти нужные вам функции в существующей библиотеке, поэтому разработчикам может потребоваться создавать собственные функции самостоятельно, что требует времени.

3. Непрерывная поддержка интеграции

На момент написания этой статьи во Flutter отсутствует поддержка платформ непрерывной интеграции, таких как Travis или Jenkins. Таким образом, для автоматизации сборки, тестирования и развертывания вашим разработчикам необходимо использовать и поддерживать пользовательские сценарии, Напримерэто.

Стоит отметить, что:

4. Платформенный риск

Несмотря на то, что Flutter является открытым исходным кодом, было бы катастрофой, если бы Google решил прекратить поддержку проекта.

Тем не менее, с тех пор как команда Google выпустила бета-версию Flutter, она наращивала поддержку Flutter. Как показала выдающаяся роль Flutter во время Google IO 19 и недавнем мероприятии Flutter Live.

Трудно представить, куда бы пошел Flutter без Google.

5. Размер приложения

Приложения, написанные на Flutter, крупнее нативных приложений. Пожалуйста, проверьте статьюСравните размеры APK. Тем не менее, команда Flutter работает надУменьшить размер приложения.

React Native — преимущества и недостатки

✅ Преимущества React Native

1. Горячее обновление = быстрая разработка

По сути, имеет ту же функциональность, что и Flutter.

Горячая перезагрузка ускоряет процесс разработки, позволяя разработчикам вводить новый код непосредственно в работающее приложение. Таким образом, разработчики могут сразу увидеть изменения, не перестраивая приложение.

Горячая перезагрузка также сохраняет состояние приложения, избегая риска его потери при полной перезагрузке (важное преимущество в фреймворках, основанных на состояниях) — ускоряя процесс разработки мобильных приложений.

Чтобы улучшить работу разработчиков с горячей перезагрузкой, команда React Native включила в версию 0.61 новую функцию, называемую быстрым обновлением. Эта функция сочетает в себе динамическую перезагрузку и горячую перезагрузку. Он более устойчив к опечаткам и ошибкам, чем предыдущие версии. ты сможешьздесьУзнайте больше о быстром обновлении.

2. Напиши один раз, беги везде

  • Точно так же, как Flutter: напишите единую кодовую базу для поддержки 2 приложений, охватывающих платформы Android и iOS.

    Более того, JavaScript передается свеб приложениеВы также можете помочь при совместном использовании кода для написания кроссплатформенных приложений. Это делается путем создания абстрактных компонентов, которые компилируются на целевой платформе.

Ниже приведены примеры библиотек, которые позволяют создавать код на платформах, отличных от iOS и Android, включая веб-приложения и настольные приложения:

  • React Native for Web- Поддерживает Android, iOS и Интернет (используется Twitter для создания Twitter Lite)
  • ReactXp– Разработано командой Skype для поддержки Android, iOS и Интернета; также доступно для Windows 10 (UWP).
  • react-native-windows– Разработано командой Microsoft и поддерживает все устройства, поддерживаемые Windows 10 (ПК, планшеты, 2-в-1, Xbox, устройства смешанной реальности и т. д.).

кстати

Бартош (наш разработчик React Native) видит вещи иначе, чем большинство, и предпочитает использовать альтернативу.

Если вы сравниваете настольное веб-приложение, мобильное веб-приложение и собственное приложение, вы можете предположить, что они используют одну и ту же бизнес-логику, но им могут потребоваться определенные пользовательские интерфейсы, отвечающие различным потребностям пользователей.

Так почему бы не?

  1. Извлечь общий код в отдельный репозиторий;
  2. относиться к нему как к отдельному элементу;
  3. Вводится ли код так же, как и другие зависимости?

Таким образом, разработчики могут сосредоточиться на написании приложений для реальной платформы, не беспокоясь о межплатформенной совместимости.

смотретьПрезентация Бена ЭллербиУзнайте о подходе, и если вам нравится идея создания абстракций на платформе, ознакомьтесь с нейПрезентация Радека Петрушевского.

3. Используется широко популярный язык — JavaScript

React Native использует JavaScript: язык программирования, с которым знакомы многие разработчики (в то время как Dart все еще не так широко известен или используется). И, если вы являетесь разработчиком языков программирования со статической типизацией, вы даже можете использоватьTypeScript- Надмножество JavaScript.

4. Свобода выбора для разработчиков

React Native позволяет разработчикам создавать кроссплатформенные приложения. Не делайте больше.

Преимущество заключается в том, что React Native позволяет разработчикам точно решить, какое решение они хотят использовать; и то, и другое основано на требованиях проекта и предпочтениях разработчиков.

Скажем, если разработчику нужно решить, как обрабатывать глобальное состояние (как хранить и управлять данными, используемыми во многих компонентах приложения), выбрать библиотеку маршрутизатора или выбрать между JavaScript и TypeScript, он может решить, использовать ли пользовательский UI-библиотека или напишите свою собственную.

5. Относительная зрелость

Официальная версия React Native была выпущена 5 лет назад, поэтому у команды Facebook было достаточно времени, чтобы стабилизировать API, а также сосредоточиться на исправлениях и проблемах.

Сейчас они работают над некоторыми захватывающими улучшениями, такими как уменьшение размера приложения.

6. Активное и обширное сообщество

React Native имеет большое сообщество разработчиков. Не только это, но иБесчисленные учебники, библиотеки и UI-фреймворки, они облегчают изучение технологии и быстро и легко ее развивают.

И, если вы больше сосредоточены на сборе репозиториев статей, инструментов и материалов о конкретных технологиях, React Native — лучшее место, чем Xamarin, Flutter или Ionic (источник:Awesome-Flutter,Awesome-ReactNative,Awesome-Ionic,Awesome-Xamarin.

Кроме того, React Native является частью **«семейства React»**.

  • Также стоит вашего вниманияExpo- Структура построения React, упрощающая доступ к собственным API, с готовыми решениями для типичных мобильных функций, таких как push-уведомления.
  • Вторая библиотека, о которой стоит упомянуть, этоAWS Amplify: это решение упрощает интеграцию с возможностями AWS, охватывая аутентификацию, хранилище, push-уведомления и аналитику.

7. Легко учиться

Это преимущество в нашем списке предназначено для разработчиков React.React Native прост в использовании, если у вас есть опыт веб-разработки и вы уже используете популярные решения React., без необходимости изучать новую библиотеку. Вы можете использовать одни и те же библиотеки, инструменты и шаблоны.

8. До 50% меньше тестов

Предполагая, что у вас есть одно и то же приложение на обеих платформах, процесс обеспечения качества будет быстрее и с меньшим количеством проверок.

Мы пишем примерно на 50 % меньше автоматических тестов, потому что можем создавать одни и те же тесты для запуска на обеих платформах, что снижает потребность в командах контроля качества.

Тем не менее, вам все равно придется запускать ручные тесты на том же уровне, что и нативное программирование, поскольку ваши специалисты по контролю качества должны вручную проверять оба приложения на каждой платформе.

🔻 Недостатки React Native

1. Просто близко к оригиналу

Как и в других кроссплатформенных решениях, производительность и взаимодействие с пользователем лишь близки к нативным.

Однако с React Native проще получить естественное ощущение, чем с Flutter. Требуется дополнительная работа, если вы хотите, чтобы ваше приложение Flutter имело собственные компоненты.

2. Несколько готовых компонентов

React Native поддерживает только базовые компоненты из коробки.(Многие из них изначально зависят от платформы, например, кнопки, индикаторы загрузки или ползунки).

Внешний репозиторий содержит множество других компонентов React Native. Разработчики могут использовать их в проектах, но это требует дополнительных усилий и времени.

С другой стороны, Flutter разработан для поддержки Material Design из коробки, поэтому фреймворк поддерживает больше виджетов, чтобы сэкономить время разработчиков. Разработчики, использующие Flutter, могут создавать большинство представлений, используя готовые виджеты, которые легко настраивать и использовать на разных платформах.

3. Свобода выбора для разработчиков

И проклятие, и благословение.

После того, как разработчики создадут новый проект, им необходимо решить, какой пакет навигации использовать и какое управление глобальным состоянием использовать.

Понять тонкие различия каждого решения, в конечном итоге выбрать лучшее решение для проекта, это может занять много времени.

4. Много брошенных сумок

React Native имеет множество библиотек. К сожалению, слишком многие из них либо плохого качества, либо вовсе заброшены.

Дэн Абрамов рекомендует проверять количество проблем и частоту коммитов в репозитории, чтобы предотвратить использование устаревших пакетов.

Для получения дополнительной информации см.резюме его обсуждения «Что вам не нравится в React Native?»

5. Хрупкий пользовательский интерфейс

Тот факт, что React Native за кулисами использует нативные компоненты, должен вселить в вас уверенность.После каждого обновления пользовательского интерфейса ОС компоненты вашего приложения также будут немедленно обновлены..

то естьЭто может сломать пользовательский интерфейс приложения, но случается редко.

Что еще хуже, обновления становятся еще более опасными, если они вызывают некоторые изменения в Native Components API. Хорошая новость в том, что такие инциденты случаются редко.

А в случае с Flutter (из-за того, что фреймворк самостоятельно воссоздает нативные компоненты) пользовательский интерфейс приложения более стабилен.

6. Размер приложения больше нативного

Приложения, написанные на React Native, должны иметь возможность запускать код Javascript (виртуальная машина JavaScript). Android не имеет этой функции по умолчанию, а это означает, что приложения должны включать библиотеку, поддерживающую код JavaScript, в результате чего приложения больше, чем их родные аналоги для Android.

Сделано с помощью React NativeiOS-приложениеУ них нет этой проблемы, но они, как правило, больше, чем родные. Хорошая новость заключается в том, что, как мы упоминали ранее, команда React Native работает надУменьшить размер приложения.

читать оПлюсы и минусы нативной разработки React для владельцев приложений в 2021 годуЧтобы получить больше информации.

Предсказание будущего: Flutter и React Native

Flutter привлекает все больше и больше компаний.В конце концов, мы наблюдаем ежемесячные улучшения Flutter SDK, поскольку Google продолжает совершенствовать свои инструменты.Кроме того, сообщество всегда полезно и приветливо. И мы можем ожидать, что Flutter скоро позволит нам создавать не только мобильные приложения, но и приложения для Интернета и рабочего стола.

Учитывая, что ведущие компании, такие как Alibaba, уже используют Flutter, его будущее выглядит многообещающе.

Что касаетсяReact Native, да, Facebook сейчас работает надМасштабная реархитектура технологии.

Команда делает все возможное, чтобы улучшить поддержку пользователей React Native и более широкого сообщества. Теперь сообщество может использоватьВыделенный репозиторий GitHubСледите за прогрессом.

Практическими результатами таких архитектурных улучшений являются:

  • Hermes: движок JavaScript с открытым исходным кодом, оптимизированный для мобильных приложений, который сокращает время взаимодействия, размер приложения и использование памяти.

  • Критические изменения в версии 0.60 (Facebook.GitHub.IO/реагировать-Nat IV…- По умолчанию использование самого популярного менеджера зависимостей CocoaPods упрощает управление зависимостями iOS, - Вы можете перенести React Native на AndroidX, - Вы можете извлечь дополнительные функции в процессе бережливого ядра.

Создание открытой среды для обсуждения React Native — важный шаг.Это одновременно и признак постоянного совершенствования, и сигнал светлого будущего технологии.

С учетом того, что React Native занимает такую ​​стабильную позицию на рынке и находится в постоянном движении, маловероятно, что в ближайшее время мы увидим отказ от инструментария. Читать о React Nativeдолгосрочное видение.

Тем не менее, Flutter является сильным конкурентом React Native.

Также читайте:Аутсорсинг разработки программного обеспечения — преимущества и риски для владельцев приложений

Эта статья участвует в мартовском прорыве Nuggets, нажмите, чтобы посмотретьсведения о деятельности