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 для построения интерфейса.
Сравнение с альтернативами
| Параметр | NativeScript | React Native | Flutter | Apache Cordova |
|---|---|---|---|---|
| Язык | JS/TS, Angular, Vue | JS/TS, React | Dart | JS/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 →