Великий спор

Если вы были моим читателем некоторое время (или даже недавно), вы, вероятно, можете сказать, что я хорошо разбираюсь во всех аспектах React. Я люблю React и React Native. Я действительно делаю, и любил их в течение приблизительно 4 лет.

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

Мне очень, очень нравится Flutter.

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

Флаттер

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

Я не боюсь признать, что был не прав.

Вот почему я думаю, что Flutter имеет преимущество перед React Native.

  • Легкий

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

  • Скорость

Я обнаружил, что флаттер работает особенно быстро. Запуск и сборка самих приложений заняли меньше времени, чем React или React Native. На моем Mac он определенно компилируется и строится быстрее, чем родной React. Заметная область различий заключается в соответствующих командах создания приложений фреймворков. Мы говорим о нескольких секундах, чтобы создать шаблон приложения Flutter, а также о нескольких секундах, чтобы запустить и запустить приложение. Команды создания React и React Native печально известны тем, что занимают много времени.

  • Скорость приложения

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

  • Настройка

Я помню, как настраивал свой новый ноутбук для работы с React Native, и это было довольно утомительно, даже с уже установленным Node.js и т. д. Я обнаружил, что Flutter невероятно прост в настройке, и мне потребовалось очень мало времени, чтобы настроить и запустить мою среду и первое приложение.

  • Встроенная типизация

Flutter использует язык программирования, выпущенный Google, под названием Dart. Я обнаружил, что Dart — приятный язык программирования, и, поскольку он по своей сути типизирован, вам не нужно включать Typescript или какую-либо другую библиотеку типизации.

Мне нравится Typescript, не поймите меня неправильно, но то, что ваш мобильный фреймворк изначально типизирован, экономит не только на зависимостях, но и на приобретении самого фреймворка. Я имею в виду, что вам не нужно изучать новый/смежный язык программирования в дополнение к фреймворку/библиотеке, которую вы уже изучаете.

Реагировать на родной

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

  • Документация

React существует около 9 лет, React Native — около 6. Flutter находится в бета-версии с 2015 года, но официальный запуск состоялся в 2018 году. По React Native нет недостатка в вопросах о переполнении стека, проблемах с GitHub, документации и т. д. Я чувствую, что, поскольку он существует так долго и так широко используется, что кому-либо будет трудно заявить, что недостаток ресурсов является недостатком React Native.

  • JavaScript

Я считаю, что JavaScript — невероятно надежный язык для фронтенд-разработки и не только. Он существует с середины 90-х годов и не подает признаков постепенного прекращения использования. Фактически, он по-прежнему остается основой для многих фреймворков и библиотек, помимо React Native.

  • Легкий переход для разработчиков React

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

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

Жеребьевка

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

  • Интернет

React, несомненно, является более популярным веб-фреймворком, чем Flutter, поэтому его дополнение к React Native приятно. Если у вас есть SaaS, использующий React для Интернета, имеет смысл иметь мобильное приложение, использующее React Native. У React также есть отличный набор инструментов для разработчиков в Интернете. Однако я скажу, что сами приложения React Native нельзя запускать или тестировать в браузере без предварительной установки другого пакета под названием react-native-web.

Приложения Flutter могут работать прямо из коробки.

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

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

  • Крючки

Вы, наверное, уже знаете, как сильно я люблю хуки React. Они легкие, чистые и простые в реализации. Я не могу вспомнить, когда в последний раз использовал setState в приложении React, не говоря уже о приложении React Native. На самом деле концепция хуков настолько всем понравилась, что Flutter придумали свои собственные Flutter hooks. Крючки Flutter работают аналогично хукам React (конечно, с другим синтаксисом).

В то время как React Native первым добрался до хуков, хуки Flutter — это адаптация, которая помогает вам управлять состоянием, не полагаясь на виджет с отслеживанием состояния. Один небольшой недостаток хуков Flutter заключается в том, что это отдельная зависимость. Хуки React можно просто импортировать из самой библиотеки React, и для них не требуется отдельная установка (если вы используете React v.16.8 или более позднюю версию).

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

Краткое содержание

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

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

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

Есть другое мнение? Зажигайте в комментариях!

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

Вы также можете подписаться по электронной почте и получать уведомления, когда я публикую что-то новое!

Спасибо!

Рекомендации