Гибридное приложение - Ionic vs NativeScript

Я нахожусь в мобильном пространстве довольно долгое время, и у нас уже есть собственное приложение для Android и iOS. Теперь наша компания планирует расширить наш мобильный сайт, и наша команда выбрала Angular 2 + TypeScript + Ionic 2. С большим трудом мы завершили разработку нашей регистрационной формы в Ionic + Angular. Теперь я узнал о NativeScript для разработки гибридных приложений без веб-просмотра, и поскольку он использует собственный компонент пользовательского интерфейса, люди говорят, что внешний вид и производительность приложения будут хорошими.

Я немного смущен, чтобы выбрать один 1. Angular + TypeScript + Ионный (html, js, css) или 2. Angular + TypeScript + NativeScript (xml, js, css)

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

Пожалуйста, помогите мне.

Спасибо

Ответы

Ответ 1

Это действительно субъективный вопрос/ответ, поскольку он зависит от того, сколько работы вы хотите сделать. :-)

Прежде всего, в приложении Ionic/Angular вы в основном делаете одну и ту же веб-версию в одно и то же время (т.е. это гибридное приложение). Производительность может быть серьезной проблемой в зависимости от того, что вы делаете. Простых экранов не так много; большое количество данных приведет к гораздо большим проблемам с производительностью. Кроме того, компоновка экрана, вероятно, вызовет у вас больше всего проблем, так как вы в основном пишете код для небольшого веб-браузера, который имеет совершенно разные разрешения экрана в зависимости от каждого устройства и ОС, на которой он работает. Если вам нужно ближе к нативной производительности; Есть вещи, которые вы можете сделать, чтобы сделать Ionic быстрее (например, используя CrossWalk), и в целом вы можете создать достойное веб/гибридное приложение в Ionic.

Однако, скорее всего, у гибридной системы никогда не будет ничего, близкого к производительности Native, и при этом она не будет действовать как Native App, поскольку это веб-приложение, работающее в браузере и пытающееся вести себя как нативное приложение.

Теперь, если вам нужна собственная производительность и/или возможность выполнять встроенные функции на устройстве, то использование NativeScript может быть лучшим выбором. Вы получаете собственную производительность и доступ ко всем собственным элементам управления (то есть таким вещам, как настоящие ListViews, которые могут обрабатывать тысячи сложных элементов без замедления), но стоимость заключается в том, что вам НЕОБХОДИМО создать два отдельных экрана и отдельный CSS для вашего приложение.

Если вы используете Angular или VueJS; Фактическая логика может быть разделена между NativeScript и вашим веб-приложением. И теперь есть несколько отличных способов сделать это, например, xPlat (платформа обмена угловым кодом). Но во всех них генерация экрана все же отличается. Так что для вашего веб-компонента/экрана у вас может быть сеть mycomponent.html<div>{{somevalue}}</div> и NativeScript Angular mycomponent.html<Label text="{{somevalue}}"></Label>. Таким образом, вы получите более предварительную работу в NativeScript, поскольку вам необходимо создать два отдельных файла макета экрана. Это может показаться проблемой; но на самом деле это позволяет вам гораздо лучше представить собственную мобильную версию для экранов телефона и/или планшета. Кроме того, открываются дополнительные параметры, такие как, возможно, доступ к камере в режиме реального времени в макете NativeScript и кнопка загрузки файла изображения в HTML-версии.

Как человек, который использовал обе технологии, я твердо нахожусь в лагере NativeScript для всех моих новых проектов; но для некоторых людей все еще существуют действительные варианты использования Ionic/Phonegap/Cordova. Если приложение уже имеет веб-интерфейс и/или ничего, что действительно требует каких-либо сложных представлений и/или большого количества отображаемых данных. На самом деле платформа с открытым исходным кодом xPlat, которую предлагает nStudio, поддерживает как цели Ionic, так и NativeScript. Так что вы можете совместно использовать код между всеми поддерживаемыми платформами и сделать лучший выбор для вашей компании в любой момент времени.

Например; может быть, вы начнете с сборки Ionic/Web, потому что в целом это одно и то же. В дальнейшем с совместным использованием кода xPlat вы можете легко переключить мобильную часть приложения в Nativescript, когда у вас наконец-то появятся дополнительные силы и время, и/или вам нужна более высокая производительность.

Обратите внимание, что NativeScript с Angular разрешает совместное использование кода; Кроме того, если вы большой поклонник VueJS, NativeScript с VueJS также разрешает совместное использование кода. Таким образом, это два отличных способа совместного использования кода между вашим веб-сайтом и приложением NativeScript в зависимости от того, что ваша компания уже использует, сохраняя при этом собственную производительность для вашего мобильного приложения.

Ответ 2

Краткий ответ

Ionic позволяет создавать гибридные приложения или прогрессивные веб-приложения. Структура приложения написана на HTML, а встроенное приложение использует WebViews (что-то вроде веб-сайта внутри вашего приложения).

С NativeScript вы создаете действительно собственные приложения, которые не используют HTML DOM, и вам придется изучать компоненты пользовательского интерфейса платформы, на которую вы ориентируетесь (например, iOS/Android). Однако собственные приложения обычно работают быстрее, чем гибридные, и вы можете получить доступ к аппаратным функциям, таким как камера, сенсорный экран, календарь, телефонные звонки и т.д., Все с помощью кода TypeScript/JavaScript.


Длинный ответ

Вот выдержка из сообщения в блоге Danyal Zia. Я предлагаю вам прочитать полный.

Ионная (2)

Ionic 2 - это гибридная среда разработки мобильных приложений… хорошо, так что же это означает под гибридной разработкой? Гибридные приложения похожи на любые другие приложения, которые можно найти в магазинах приложений, они работают одинаково (загружая и устанавливая их), и взаимодействие с пользователем аналогично, фактически большинство пользователей едва ли осознают разницу между нативными и гибридными приложениями. приложения.

Интересная вещь о гибридных приложениях заключается в том, что они размещаются внутри собственного приложения, которое использует WebView - своего рода загрузчик веб-страниц без браузера, так что вы получаете доступ к мобильным функциям, таким как камера, контакты, гироскоп и т.д. с помощью языков сайта, таких как HTML, XML, CSS и т.д.

Ionic 2 по-прежнему использует WebView (как и предыдущая версия Ionic), поэтому вы пишете HTML-код в своих действиях Android, поэтому он может быть медленнее по сравнению с ReactNative и NativeScript (мы поговорим об этом позже). Вы можете создавать нативные виджеты в Ionic 2, но они по-прежнему отображаются в WebView внутри собственного контейнера и поэтому не являются технически нативными.

Доводы:

  • Гибридная поддержка веб-разработки. Та же основанная на коде может быть использована для разрабатывать приложения для Android, iOS, Windows Phone и Интернета.
  • ОЧЕНЬ быстрый цикл разработки-тестирования. Вы пишете код и тестируете его на браузер, нет необходимости для тяжелой загрузки эмулятора.
  • Позволяет вам писать код на TypeScript, что делает переход с Angular 2 очень простым.
  • Этот же язык (TypeScript) можно использовать для разработки приложений для каждая платформа.
  • Его система плагинов делает его доступным для использования любой родной функционал устройств.

Против:

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

NativeScript

Разработанный Telerik, NativeScript позволяет вам использовать либо JavaScript, либо TypeScript для разработки, поэтому, если вы ранее использовали Angular 2, у вас будет простой переход. Telerik ранее разрабатывал пользовательский интерфейс Kendo с тесной интеграцией в Angular для гибридных приложений, но позже они поняли, почему бы не обеспечить настоящий кроссплатформенный нативный опыт?

С помощью TypeScript и Angular 2 вы можете очень легко создавать компоненты для мобильных приложений, используя декларативный стиль. Заявив о поддержке "напиши один раз, запусти везде", один и тот же код Angular 2 можно использовать для пользовательского интерфейса для всех платформ, на которые он ориентирован. NativeScript - это настоящая кроссплатформенная платформа, что означает 100% -ный доступ к Native API, и его миссия состоит в том, чтобы позволить людям использовать одну и ту же кодовую базу для всех платформ.

В отличие от ReactNative, NativeScript использует собственный код пользовательского интерфейса (для соответствующих телефонов Android и iOS), даже если вы пишете код в TypeScript/JavaScript! Если мы посмотрим на производительность, то NativeScript действительно имеет преимущество перед ReactNative, потому что он использует структуру AngularJS 2 для создания компонентов.

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

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

Доводы:

  • Реальная кроссплатформенная поддержка. Единая база кода для разработки приложений для всех поддерживаемых платформ.
  • 100% собственный доступ к API. Вы можете получить доступ к аппаратным функциям, таким как камера, сенсорный экран, календарь, телефонные звонки и т.д. С помощью кода TypeScript/JavaScript.
  • Использует Angular 2, чтобы вы могли легко перенести свои предыдущие веб-компоненты в свои приложения.
  • Очень хорошая поддержка от Telerik.

Минусы:

  • Многие плагины должны быть загружены отдельно для компонентов. Не все плагины доступны или проверены (то есть тщательно протестированы).
  • Размер приложения намного больше, чем у ReactNative и Ionic 2. Если у ваших пользователей медленное интернет-соединение, это может быть проблемой для вас.
  • Нет поддержки HTML и DOM в NativeScript, поэтому вам нужно изучить различные компоненты пользовательского интерфейса для создания пользовательского интерфейса приложений.

Ответ 3

Не смешивайте Nativescript с гибридными приложениями, поскольку гибридные приложения - это приложения, использующие веб-просмотр (например, Ionic), Nativescript - это Native. Какая разница между обоими типами.

С помощью Ionic у вас может быть один источник, поскольку у вас одинаковое представление всех трех целей.

В Nativescript используется нативный элемент, поэтому вам придется сделать два разных представления для браузеров и для мобильных устройств и внести некоторые изменения в код JavaScript, поскольку некоторые вещи не в API браузера, а на нативной стороне или наоборот.

Зависит от приложения, какова цель использования.

Ответ 4

Чтобы запоздало добавить превосходные ответы выше, как вы упомянули, бизнес также должен внести свой вклад в процесс принятия решений. Ниже приведены несколько субъективных вопросов, на которые должен ответить бизнес:

  • Какое влияние окажет финансирование/определение ресурсов разработчика на проект? I.e.: Мы должны делать то, что имеем? Получить новых людей? Переподготовка? Гибридные или собственные решения и необходимость использования существующего кода имеют нетривиальное воздействие. Представьте себе решение, в котором либо собственные, либо сторонние разработчики становятся более или менее избыточными...

  • Каково влияние на бизнес, если UI/UX является или не похож на мобильный или веб-ответный/гибридный/PWA? Что касается влияния нескольких разных возможностей на доступ к собственным функциям, таким как камера, GPS, уведомления и т.д. Между native и web/responsive/hybrid/PWA?

  • Какое влияние может иметь отличающаяся производительность приложений на разных платформах? (т.е. native быстрее)
  • Оценил ли бизнес стоимость жизни и обслуживания каждого из этих решений?

Ответы - это основные драйверы, которые могут реагировать (например, grid/ flexbox/bootstrap), гибридные (например, Ionic) или native (например, любят Nativescript, React Native или pure os native).

В конце концов, окончательное решение представляет собой комбинацию бизнес-и технических драйверов.