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

30

Я рассматриваю использование React Native для нового веб-приложения. Можно ли использовать как iOS, так и Android-приложения?

Я знаю, что это на дорожной карте, но мне непонятно, будет ли это отдельный проект с открытым исходным кодом (например, React Android vs React Native) или только один (например, React Native).

Теги:
react-native

7 ответов

39
Лучший ответ

Вы можете ориентироваться на 80 ~ 99 +% (в зависимости от того, какие собственные виды/модули Android/iOS вы используете, например. У вас есть пользовательский графический код или сетевой код с низким уровнем TCP, которые могут выполняться только в собственном коде И выставлять в качестве API для вашего JS-кода. Размер конкретного JS-кода на платформе фактически минимален. Кроме того, вы можете также использовать проверку платформы, например, if (Platform.OS === 'android'){} для повторного использования кода), что довольно приятно. Dropbox и другие компании сделали аналогичный проект: используя С++ для создания "общего" компонента между проектом iOS и Android, в то время как реализовать большую часть кода пользовательского интерфейса в родном iOS (Objective-c или swift) и Android (java). Но теперь вы делаете С++ с Java и ObjectiveC или Swift, больше языка для освоения, большей сложности и большего количества сока мозга сваливается. И, вероятно, потребовалось несколько супер-крутых гимнастических шагов, чтобы сделать работу с разными родными кодами как в iOS, так и в Android, а также отлаживать...

React Native просто делает его намного проще писать почти все в JavaScript. Но есть уловка, только около 80% кода JS могут быть разделены. В обозримом будущем вам все равно нужно написать JS-код для конкретной платформы для Android и iOS.

Вот почему FB сказал, что они нацелены на "Учиться один раз, код где-нибудь" , а не "запускать" везде.

Но это все еще очень хорошо, кроме повторного использования кода ( 80 +% повторного использования кода по-прежнему является большим улучшением по сравнению с поддержкой 2 совершенно разных версий: Android и iOS ya?)

Cmd + R для обновления приложения - БОЛЬШОЕ повышение скорости разработки. Ожидание большого проекта для компиляции просто заставляет вас чувствовать, что вы умираете внутри.

Декларативный пользовательский интерфейс, который вы получаете бесплатно, потому что используете React. Это еще один замечательный плюс!. Вам больше не нужно "копаться" в вашем конкретном коде UI. Изменены данные? Просто "промойте" его, и пользовательский интерфейс просто обновится соответствующим образом. Никакой мозговой сок не пропадает.

Я просто портировал не очень сложное приложение Android React Native для iOS. И мне потребовалось 3 дня. Запрос для и iOS-версии для приложения стал довольно резким и незапланированным шагом. Так что определенно можно было бы еще быстрее, если бы я построил Android с планом iOS. Огромная победа:)

Еще одно большое преимущество - сделать push-код , не пройдя адский процесс проверки магазина приложений на 1 неделю. Так что не больше, "YAY, наше приложение одобрено. Пусть релиз. О, Shiiit. Критическая ошибка и наше приложение продолжают рушиться (это будет продолжаться, по крайней мере, за неделю до того, как ваше исправление будет жить). И вы должны просить Apple ускорить процесс". Это возможно, потому что основная часть базы кода будет записана в JS и с такими инструментами, как AppHub или CodePush, вы можете почти мгновенно развернуть код для своих пользователей. Это условно разрешено Apple.

3.3.2 Приложение не может загрузить или установить исполняемый код. Интерпретированный код может использоваться только в приложении, если все сценарии, код и интерпретаторы упакованы в приложение и не загружаются. Единственное исключение из вышеизложенного - это сценарии и код, загруженные и выполняемые встроенной инфраструктурой WebKit от Apple, при условии, что такие сценарии и код не меняют основной цели приложения, предоставляя функции или функции, которые не соответствуют намеченной и рекламируемой цели приложения, представленного в App Store.

Наконец, как проект с открытым исходным кодом, долговечность проекта имеет тенденцию вызывать беспокойство. Не проблема для React Native. Внутренне используемый (FB Ads Manager) и поддержанный FB (дюжина инженеров FB?) Facebook, с около 500 вкладчиков и 25 тысяч звезд, React Native полон живой. Видеть - это верить:) (https://github.com/facebook/react-native)


ИЗМЕНИТЬ

Я понял, что я, по-видимому, немного предвзятый и только говорил о хороших вещах о React Native. Так что сделайте checkout https://productpains.com/product/react-native/ и проблемы Github, чтобы иметь полную картину. Это определенно не серебряная пуля. Это, как говорится, удовлетворяет большинству моих вариантов использования, и я не мог видеть, что я использую родные iOS или Android в ближайшее время.

ИЗМЕНИТЬ Выпуск приложения для конференции Facebook F8 от Facebook (duh..) является открытым исходным кодом на 100%, и у них есть действительно хороший учебник, чтобы показать вам, как вы могли бы иiOS и Android (90%, а также родной?), и в то же время достигли 85% повторного использования кода. проверьте это → https://makeitopen.com

  • 0
    Спасибо! Мне еще предстоит освоить React Native, но это обнадеживает, что у меня появилось много способностей, которые можно передать, как только я начну хорошо разбираться в одном из вариантов React.
  • 1
    @williamle8300 williamle8300 рад, что это помогает. Я никогда не был парнем JS и имел дело в основном с нативными материалами для Android / IOS. Мой опыт с RN был взрывом. И если вы также постепенно поняли, что большинство разработчиков из основной команды RN сами являются родными разработчиками мобильных приложений :) Плюс, вы правы, определенно есть много передаваемых навыков
Показать ещё 6 комментариев
18

Не имеет смысла иметь одну кодовую базу, если вы хотите по-настоящему родной опыт. На данный момент у нас есть такие вещи, как NavigatorIOS в React Native, который предоставляет интерфейс iOS-стиля для навигации между экранами приложений, но если бы мы только начали использовать это на Android, это не будет выглядеть как истинное приложение для Android.

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

Одно из преимуществ, которое вы получите, это то, что любая логика приложения - возможно, хранилище или ваши взаимодействия с бэкэнд - может быть записана в файле JavaScript, а затем включена как iOS, так и Android.

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

  • 0
    Это именно та проблема, с которой я сталкиваюсь. Логика приложения и бизнес-логика остаются неизменными, но логика представления полностью меняется на разных платформах. Я предполагаю, что главное преимущество заключается в том, что разработчики с одинаковыми навыками на разных платформах
  • 0
    Вы можете добавить «настоящий» нативный компонент, как хотите. И в то же время вы можете достичь 85% повторного использования кода. RN никогда не обещает единой кодовой базы, но больше напоминает большую часть кодовой базы, которая все еще является большой победой.
7

React Native для Android только что был выпущен, папка Android будет создаваться вместе с папкой iOS при создании нового проекта.

5

Да. Мы запускаем его в производстве около 5 миллионов зарегистрированных пользователей.

Некоторые вещи немного отстают от iOS, но быстро догоняют. Это хороший вагон, чтобы быть включенным.

5

Был упомянут еще один совет, как NavigatorIOS. Facebook не поддерживает код для NavigatorIOS. Вместо этого они фокусируются на Navigator.

2

React Native разработан таким образом, что вы можете развернуть как iOS, так и Android. Конечно, есть оговорка.

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

Например, если вы поместите границы в текст, они будут отображаться на iOS, но не на Android. Чтобы преодолеть это, вам нужно разместить "Вид вокруг текста" и применить к нему границу. К счастью, React Native упрощает интеграцию отдельных таблиц стилей для каждой платформы (или даже стиля для конкретной платформы на одной таблице стилей).

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

1

вам не нужно поддерживать отдельную базу кода для Android и ios. На самом деле вы можете использовать ту же базу кода для сборки android и ios. Я рекомендую прочитать документацию (в соответствии с используемой версией, используемой для реагирования) перед использованием любого встроенного компонента в вашем коде. Например: - TextInput компонент onKeyPress поддерживает только функции ios.

Если ур использует внешнюю библиотеку, проверьте эту поддержку lib как для ios, так и для android. В любом случае вам нужно настроить внешнюю библиотеку отдельно (установить) как android, так и ios.

надеюсь, что это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню