Открыть сервис

Native Script

NativeScript — это фреймворк с открытым исходным кодом для разработки кроссплатформенных мобильных и настольных приложений на языках JavaScript, TypeScript или Angular. Позволяет создавать приложения для iOS и Android, используя единую кодовую базу, и предоставляет доступ к нативным API платформ напрямую, без использования веб-обёрток (WebView).

История

Проект NativeScript был основан болгарской компанией Progress Software (ранее Telerik) в 2014 году. Первая публичная версия (1.0) вышла в марте 2015 года. Изначально фреймворк позиционировался как альтернатива Apache Cordova и React Native, предлагая более прямой доступ к нативным компонентам.

В 2019 году Progress передала управление проектом сообществу, создав организацию NativeScript Foundation. В 2020 году вышла версия 7.0, в которой была упрощена архитектура и добавлена поддержка Vue.js. В 2021 году, после приобретения Progress компанией Insight Partners, развитие NativeScript продолжилось под эгидой сообщества и компании Progress.

Архитектура и принцип работы

NativeScript использует среду выполнения JavaScript (движок V8 на Android и JavaScriptCore на iOS), которая работает в отдельном потоке (UI-потоке). Код JavaScript взаимодействует с нативными компонентами платформы через специальный слой абстракции, называемый маршалером (marshaller). Этот слой преобразует вызовы JavaScript в вызовы нативных API (Java/Kotlin для Android, Objective-C/Swift для iOS) и обратно.

Ключевые компоненты архитектуры:

  • Ядро (Core): Обеспечивает базовую функциональность — загрузку модулей, управление жизненным циклом приложения, взаимодействие с нативным UI.
  • Модули (Modules): Предоставляют абстракции над нативными возможностями (камера, геолокация, файловая система, сеть).
  • UI-слой (UI Layer): Позволяет описывать интерфейс с помощью декларативного синтаксиса XML или Angular/Vue.js шаблонов. Каждый элемент интерфейса (кнопка, текст, изображение) напрямую отображается на нативный компонент платформы (например, Button в NativeScript соответствует UIButton на iOS и android.widget.Button на Android).
  • Плагины (Plugins): Расширяют функциональность фреймворка. Плагины могут быть написаны на JavaScript или на нативных языках.

Возможности

NativeScript предоставляет разработчику следующие возможности:

  • Прямой доступ к нативным API: Разработчик может вызывать любые методы Java, Kotlin, Objective-C или Swift прямо из JavaScript, без необходимости писать обёртки.
  • Кроссплатформенность: Одна кодовая база для iOS, Android и (с версии 8.0) для настольных платформ (через Electron).
  • Поддержка популярных фреймворков: Angular, Vue.js, Svelte, React (через сторонние решения).
  • Гибкая стилизация: Поддержка CSS (каскадные таблицы стилей) для оформления интерфейса, включая анимации и переходы.
  • Интеграция с TypeScript: Полная поддержка TypeScript для статической типизации.

Классификация

По типу использования NativeScript можно разделить на две основные редакции:

  • NativeScript Core (ранее — просто NativeScript): Использует чистый JavaScript/TypeScript без привязки к фреймворку. Разработчик пишет UI в XML-файлах и логику в JS/TS-файлах.
  • NativeScript with Angular: Использует Angular для организации структуры приложения, маршрутизации, управления состоянием.
  • NativeScript with Vue.js: Использует Vue.js для построения интерфейса.

Сравнение с альтернативами

ПараметрNativeScriptReact NativeFlutterApache Cordova
ЯзыкJS/TS, Angular, VueJS/TS, ReactDartJS/HTML/CSS
РендерингНативные компонентыНативные компонентыСобственный движок (Skia)WebView (HTML)
Доступ к нативным APIПрямой (без обёрток)Через мост (bridge)Через плагиныЧерез плагины
ПроизводительностьВысокаяВысокаяВысокаяНизкая (из-за WebView)
Популярность (2023)Ниже среднегоВысокаяВысокаяСредняя
СообществоНебольшое, активноеОчень крупноеКрупноеКрупное

Применение

NativeScript используется для создания:

  • Мобильных приложений (iOS, Android) — основное назначение.
  • Настольных приложений (через Electron) — экспериментальная поддержка.
  • Прототипов и MVP (минимально жизнеспособных продуктов) — благодаря быстрой разработке на знакомых языках.
  • Приложений с высокими требованиями к производительности UI — например, для финансовых или медицинских систем, где важна плавность анимаций и быстрый отклик.

Известные проекты, созданные на NativeScript: приложение компании Progress для управления облачными сервисами, мобильное приложение Samsung SmartThings (частично), приложение Bitwarden (менеджер паролей) — хотя Bitwarden позже перешёл на собственный движок.

Критика

Основные недостатки NativeScript:

  • Небольшое сообщество и меньшее количество готовых плагинов по сравнению с React Native и Flutter.
  • Сложность отладки нативных вызовов, особенно при работе с платформенными API.
  • Отсутствие поддержки веб-технологий (HTML, DOM) — разработчик должен изучать нативные компоненты.
  • Медленный рост функциональности после передачи управления сообществу.

Интересные факты

  • Название «NativeScript» происходит от сочетания слов «native» (нативный) и «script» (скрипт), подчёркивая возможность писать на скриптовом языке, но получать нативный код.
  • В 2018 году NativeScript был признан одним из самых быстрорастущих фреймворков для мобильной разработки по версии анализатора GitHub.
  • NativeScript поддерживает создание плагинов на нативных языках, что позволяет использовать существующий код на Java/Kotlin или Objective-C/Swift.

Источники

  • Официальная документация NativeScript (nativescript.org)
  • Статья «NativeScript: A Comprehensive Guide» на Medium (2019)
  • Доклад «NativeScript: The Good, the Bad, and the Ugly» на конференции ng-conf (2018)
  • Анализ рынка мобильных фреймворков от Statista (2023)
  • Репозиторий NativeScript на GitHub (github.com/NativeScript/NativeScript)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →