Я тот человек, который считает, что создать хорошо продуманные, красивые и привлекательные кроссплатформенные мобильные приложения практически невозможно. Я видел приложения на основе Phone Gap и Xamarin, но плакал до конца дня после этого.

Звучит невероятно круто - если вы менеджер, вам не нужно нанимать двух разработчиков (для iOS и Android); а если вы разработчик, вам не нужно изучать два языка (Java и Objective C). Об этом говорит реклама. Но реальность не всегда ярка и ярка - все эти кроссплатформенные методы разработки гарантируют вам быстрое развитие, но результат не будет соответствовать вашим потребностям, я обещаю. В большинстве случаев это будет просто пустой тратой времени и денег, и вам, вероятно, придется переписать свои приложения.

Но, черт возьми, это 2016 год. Это все еще правда?

Да, но…

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

React Native написан на JavaScript, и очевидно, что вы должны использовать JavaScript и для создания своих приложений. Но, конечно, использовать JS в 21 веке - это безумие, поэтому мы собираемся использовать что-нибудь получше, например, ClojureScript.

Как?

Если вы хотите писать приложения с помощью React Native, забудьте о своих знаниях и опыте в Android или iOS. Нужно начинать с нуля. Но, скорее всего, это приключение будет как минимум веселым. Вы обнаружите, что думаете: «О, что я делаю? Это 5-минутная работа, и я легко могу ее закончить, используя Java / Objective C ». И это правда. Но вы будете вознаграждены за потрясающее чувство, что вы делаете что-то действительно классное (потому что я знаю, что вы потеряли это чувство, когда пишете свой Java / Python / любой другой код на своей работе).

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

React контролирует все. Компоненты React могут автоматически поддерживать данные о внутреннем состоянии и перерисовывать элементы списка.

Вот как выглядит ваш код:

Все просто, правда?

Даже если вы не знаете Clojure или ClojureScript, этот код понятен - все, что нам нужно сделать, это подписаться на обновления городов и дать React возможность делать все остальное.

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

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

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

Он также поддерживает Live Reload. Подключите свое устройство iOS или Android, внесите изменения и сразу увидите результат. Да, вам не нужно перестраивать приложение. Разве это не круто?

Есть ли проблемы?

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

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

До прошлой недели я никогда ничего не вносил в open-source. Но теперь у меня есть собственный репозиторий с демонстрационным приложением и несколько дополнений к некоторым популярным библиотекам React Native.

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

Сделай это. Сейчас. Шутки в сторону. Я гарантирую, что вы будете впечатлены.

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

дальнейшее чтение

Разработчик iOS на React Native от Марка Шиллинга
React Native в производстве от @clayallsopp