Ответ 1
Я изучаю эту тему уже по крайней мере пару лет и хочу написать вдумчивое сообщение в блоге, обобщающее то, что я узнал, но, похоже, он никогда не достигает вершины моего списка приоритетов. Здесь я приведу краткое описание.
Три класса гибридных приложений
- Гибрид через Webview
- Гибрид через кросс-компилированный
- Гибрид через ядро JavaScript
ПРИМЕЧАНИЕ. Я уверен, что для вышеупомянутых названий есть лучшие имена, но это лучше всего я придумаю в данный момент.
Гибрид через Webview
Как правило, это те приложения, которые вы упомянули выше, например, Ionic, TouchstoneJS, Meteor и Стероиды AppGyver. На самом деле, Стероиды построены на вершине Иона, если я правильно помню. Эти приложения пытаются решить гибридную проблему, имитируя компоненты, подобные натурам (кнопки, виды списков, макеты ящиков, представления табуляции и т.д.) С использованием стандартных веб-технологий (html, css, javascript). Чтобы получить доступ к собственным компонентам устройств, они используют мост под названием cordova, который предоставляет javascript api для собственных компонентов, таких как камера, gps, местоположение, вибрация и т.д. Это надежное сообщество, и если вам нужен доступ к родному компоненту, вы вероятно, найдет плагин cordova, который будет отвечать вашим потребностям. Задача для этих типов приложений - это и всегда была производительность. Поскольку они отображают все приложение в WebView (в основном полноэкранное окно браузера без хрома), он имеет только один поток для рендеринга всей страницы и выполнения любых анимации и т.д. В конце концов, поскольку компоненты близки, но не совсем как родные компоненты, а потому, что производительность близка, но не такая гладкая, как собственная производительность, эти приложения, как правило, падают где-то в сверхъестественной долине. Они выглядят так же хорошо, но на самом деле они никогда не бывают.
Гибрид через кросс-компиляцию
Примерами могут быть Appcelerator Titanium и Xamarin. Эти приложения решают проблему гибридов, абстрагируя родной apis на общий язык. Для Titanium этот язык является JavaScript. Для Xamarin этот язык является С#. Итак, чтобы написать приложение для Android, iOS, Windows и Desktop в Xamarin, вы должны написать весь свой код на С#, используя свои абстракции (API), а затем перечислить их в настоящие собственные приложения. Эти подходы имеют правильную идею, но многие скажут, что они не соответствуют действительности. Хотя личный опыт работы с Titanium, я обнаружил, что на самом деле создание приложения было довольно болезненным, потому что вы зависите от их абстракции. Если в слое абстракции есть ошибка, вы застряли... пока они не исправят это.
Гибрид через ядро JavaScript
Есть только два примера этого, о которых я знаю, Facebook React Native и Telerik NativeScript. Это будущее развития мобильных приложений, на мой взгляд, и если бы я был вами, я бы сосредоточил свою энергию. Обе эти попытки аналогичным образом разрешают гибридную проблему, поскольку разработчик в конечном итоге пишет JavaScript для создания собственных компонентов, но каждый из них использует совершенно другой подход. React Native переводит ваш JavaScript на Native через RCTBridgeModule, тогда как Native Script дает вам прямой доступ к native apis через некоторые хитроумные трюки в JavaScript Virtual Machines. Я еще не работал с NativeScript, поэтому не знаю, насколько зрелым или совершенным он является. Я установил их пример приложения, и это показалось мне немного вялым. Я думаю, что одним из самых крутых предложений о ценности является то, что он буквально дает вам 100% доступ к собственным API (разумеется!). В прошлом году я активно работал с React Native, и меня впечатлило большое впечатление. Оба еще очень молоды и, безусловно, созреют.