Гибридное приложение - 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).
В конце концов, окончательное решение представляет собой комбинацию бизнес-и технических драйверов.