Считаю, что лучшим Enterprise-решением для Mobile является ReactNative. В целом все, можно расходиться :)
Но постойте, давайте я вам расскажу, чем же так прекрасен ReactNative.
Универсальность подхода
В основе ReactNative лежит ReactJS и JavaScript, это значит что можно будет привлечь к разработке уже состоявшихся ReactJS-программистов.
Не маловажным является факт того, что научившись писать на ReactNative под iOS, написать приложение под Android не составит дополнительного труда. В случае нативной разработки пришлось бы осваивать Swift/Objective-C для iOS и Kotlin/Java для Android. ReactNative – это JS, а еще это все те же самые принципы в построении приложения, что и в ReactJS, за исключением платформенных специфик. Learn once, write everywhere.
Архитектурная составляющая
Интернет переполнен статьями о Model-View-Presenter, Model-View-ViewModel, Model-View-WhatEverPattern, VIPER, CleanArchitecture. Но ни iOS, ни Android не предоставляли возможность разделять код в соответствии с одной из выше перечисленных парадигм, все эти компоненты и их нарезку необходимо было осуществлять с помощью библиотек либо самостоятельно.
С ReactNative у нас идет конкретное разделение на View Components и состояние, которое ложится в Redux. В итоге мы разделяем все на отдельные слои. Тестировать код очень просто:
- вот тебе отдельно View - возьмите и протестируйте;
- вот reducers – просто функции, тестировать одно удовольствие;
- вот вам модель данных.
ReactNative провоцирует хорошо структурированный код :) Программист оперирует компонентами, которые просто написать, протестировать и использовать.
Ну ладно, ладно, чуток схитрил, в Android появились Architecture Components, но уже же 2017 г. на дворе, как-то поздновато...
Скорость разработки и плагины
Разрабатывая приложения на ReactNative, программистам не надо долго ждать редеплоя, рендеринг изменений происходит практически моментально. Также очень здорово, что можно стилизовать приложение с использованием CSS-таблиц, это дает возможность очень быстро стилизовать UI.
При разработке с использованием ReactNative, у вас есть возможность использовать и расширять приложение через плагины, вы можете добавлять функциональность, написанную с помощью нативных средств, например карты, не через WebView, а полноценные с компасом, жестами для увеличения и т.д.
Скорость работы
Скорость работы превосходит скорость приложений, написанных с использованием Ionic, Sencha, потому как здесь нет работы через WebView. В ReactNative задействован плагин, который для каждой платформы представляет нативные виджеты. В результате пользователь работает с нативными UI-элементами.
Причем здесь Enterprise
Многим компаниям сейчас крайне необходимы приложения на мобильных устройствах. Как один из вариантов разработки корпоративных приложений может быть ReactNative, он позволяет создать приложения с переиспользованием кодовой базы между Android- и iOS-приложениями. Производить разработку быстро и без отдельных команд под каждую платформу – это яркое преимущество.
К выше перечисленным фактам добавлю: можно использовать разработанные JS-библиотеки, и это делает ReactNative просто по настоящему королевским решением. Согласитесь, очень здорово, когда одна и та же библиотека может быть использована и под Android и iOS.
Иван, стой, а где же эти яркие летние краски? А краски в самом ReactNative – стоит только начать разрабатывать с ReactNative, и вы больше не захотите возвращаться к нативным средствам, конечно же, в задачах корпоративного сегмента, я даже не заикаюсь о 3D-игрушках.
P.S.: Конечно, ReactNative не серебряная пуля, однако для большого сегмента корпоративных приложений это может быть отличный инструментом для тестирования гипотезы и создания первых версий приложения за кратчайшие сроки.
Спасибо и занятной разработки!