УДК 339.54.012

Сравнение мобильных JavaScript фреймворков React Native и Ionic

Яманко Дмитрий Иванович – магистрант Санкт-Петербургского национального исследовательского университета информационных технологий, механики и оптики (ИТМО).

Аннотация: В статье проводится сравнение двух ведущих кроссплатформенных фреймворков для разработки мобильных приложений: React Native и Ionic. Анализируются ключевые аспекты реализации подхода к разработке приложения включая способы взаимодействия с нативными компонентами операционной системы, использование веб-технологий для создания интерфейса и нативных функций устройства. Сравнивается возможности повторного использования кода для каждой платформы и экосистемы фреймворков которые включают встроенные инструменты разработчика, библиотеки и плагины. Результаты исследования позволят мобильным JavaScript разработчикам понять основные преимущества фреймворков и основные сценарии для их использования.

Ключевые слова: кроссплатформенная разработка, React Native, React, Ionic, мобильные приложения, JavaScript.

Кроссплатформенная мобильная разработка представляет собой подход позволяющий проектировать приложение поддерживающее множество платформ [1]. Такое приложение позволяет разработчикам использовать единый код для каждой платформы, что делает процесс разработки более гибким и менее трудозатратным в сравнении с классическим подходом разработки отдельных приложений для каждой платформы. JavaScript является популярной платформой для создания кроссплатформенных приложений за счет высокой универсальности и наличия обширного набора инструментов и библиотек. В этой статье будут рассмотрены наиболее популярные решения, представляющие два разных подхода к использованию JavaScript в разработке мобильных приложений - React Native и Ionic.

React Native мобильный JavaScript фреймворк разработанный в 2015 году компанией Facebook для создания кроссплатформенных мобильных приложений на IOS и Android [2]. React Native основан на фреймворке React, что позволяет разработчикам использовать React компоненты, что улучшает скорость и простоту разработки приложений. Главным преимуществом React Native является возможность использовать нативные функции устройства, что обеспечивает высокую производительность.

Ionic – фреймворк разработанный в 2013 году главной идеей которого является возможность использования web инструментов разработки таких как HTML, CSS, JavaScript и его фреймворков для разработки мобильных приложений путем запуска их в WebView (встроенном в мобильной операционной системе компонента браузера) [3]. Фреймворк поддерживает множество сторонних плагинов, которые позволяют ему аналогично React Native использовать наивные функции устройства.

Реализация подхода к разработке мобильных приложений

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

В React Native компоненты пользовательского интерфейса напрямую связаны с нативными элементами операционной системы, что позволяет создавать приложения приближенные к дизайну нативных для каждой плафтормы. Данная возможность реализована за счет использования специального компонента фреймворка – «JavaScript мост» (JavaScript bridge на англ.) который позволяет взаимодействовать с нативными компонентами, что обеспечивает высокую производительность приближенную к показателям нативных приложений [4]. Мост позволяет использовать нативные функции устройства как на программном уровне вызывая определенные компоненты операционной системы, так и для прямого взаимодействия с аппаратной частью устройства такой как камера и GPS-модулем. Архитектура React Native представлена на рисунке 1.

Рисунок11

Рисунок 1. Архитектура React Native

Ionic использует другой подход – разработку мобильного приложения используя инструменты веб разработки используя WebView мобильного устройства для отображения [5]. В данном случае интерфейс представляет собой веб-страницы, что позволяет использовать уже ранее разработанный веб-сайт в качестве основы для мобильного приложения, что значительно ускоряет процесс разработки. Ionic также позволяет использовать различные библиотеки для отрисовки пользовательского интерфейса и также позволяет использовать встроенную библиотеку, содержащую компоненты, приближенные по дизайну к нативным компонентам. Фреймворк не имеет встроенных инструментов для взаимодействия с нативными функциями устройства, но для решения этой задачи рекомендуется использовать стороние плагины Cordova или Capacitor [6]. Архитектура фреймворка Ionic представлена на рисунке 2.

Рисунок12

Рисунок 2. Архитектура Ionic

Сравнение фреймворков

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

Основным отличием между этими фреймворками является их подход к интеграции с мобильной платформой. React Native использует JavaScript для управления нативными компонентами напрямую, что позволяет достигать высокой производительности и гладкости работы приложения, а также обеспечивает приложению нативный вид и ощущение [7]. Это особенно важно для приложений, требующих сложной логики и интерактивности, таких как игры или приложения, активно использующие аппаратные возможности устройства.

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

Также стоит отметить различие в языках программирования и экосистеме. React Native, базируясь на React и JavaScript, предоставляет богатую экосистему готовых решений и библиотек, а также поддержку большого сообщества разработчиков. Ionic же, предлагая интеграцию с различными фреймворками веб-разработки, такими как Angular, React и Vue, позволяет веб-разработчикам легче адаптироваться к мобильной разработке.

Ниже приведена таблица сравнения, в которой подробно рассмотрены ключевые отличия между React Native и Ionic с точки зрения различных аспектов разработки мобильных приложений (таблица 1).

Таблица 1. Сравнение React Native и Ionic

Критерий

React Native

Ionic

Язык программирования и поддерживаемые фреймворки

JavaScript, TypeScript и компоненты фреймворка React

HTML, CSS, JavaScript (включаяя популярные фреймворки Angular, React, Vue и тд.)

Производительность

Высокий уровень, обеспечиваемый встроенными компонентами

Средний уровень определяемая используемыми плагинами и скоростью отображения в WebView

Нативный пользовательский опыт

Высокий уровень поддержки нативных функций и компонентов операционной системы

Средний уровень реализации, зависящий от используемых сторонних плагинов

Универсальность

Совместим с React компонентами и кодом веб-приложений, разработанных на его основе

Поддерживает большинство популярных веб инструментов разработки

Заключение

Для разработчика выбор между React Native и Ionic должен основываться на целях проекта, требованиях к производительности и взаимодействию с нативными функциями устройства.

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

Список литературы

  1. Сорока А. С. Мобильные среды веб-разработки для мобильных приложений // Современные тенденции развития и перспективы внедрения инновационных технологий в машиностроении, образовании и экономике. 2019. № 1 (4). Т. 5. С. 163-167.
  2. Пчелкин А. Ю. Кроссплатформенная разработка на базе веб-технологий для поддержки решений в проблемно-ориентированных системах управления // Экономика. Право. Инновации. 2022. № 1. С. 41–47.
  3. Колчанова С. А. Сравнение фреймворков flutter и react native, используемых в разработке гибридных приложений // E-scio. 2022. № 4 (67). С. 558-565.
  4. Мишагин Д. В. Сравнительный анализ кроссплатформенных технологий для разработки мобильных приложений // Оригинальные исследования. 2020. № 5. Т. 10. С. 189-198.
  5. Недяк А. В. Инструменты мобильной кроссплатформенной разработки приложений // Отходы и ресурсы. 2020. № 4. Т. 7. С. 13.
  6. Андреев М. Д. Выбор платформы для разработки мобильного нативного клиентского приложения для портальных решений телеком-операторов // Информационные системы и технологии. 2019. С. 373-377.
  7. Аблякимова А. Н. Ionic framework в разработке гибридных мобильных приложений // Информационно-компьютерные технологии в экономике, образовании и социальной сфере. 2018. № 4 (22). C. 62-68.