Создание приложений на Axion
Полное руководство: от первого проекта до установленного .axn-пакета — по главам. Приготовьте HTML, CSS и JavaScript — всё остальное сделает Axion Engine.
01 Введение
Axion — кроссплатформенный application runtime на Rust. Приложение пишется на HTML, CSS и JavaScript, а выполняется нативно через Axion Engine, который управляет WebView, жизненным циклом, разрешениями, IPC и пакетами.
1.1Что такое Axion
Axion — это не UI-фреймворк и не оболочка браузера. Приложение остаётся веб-страницей, но живёт как нативная программа: имеет своё окно, пакет, права и жизненный цикл. Движок предоставляет приложению:
- Runtime — запуск, остановка, приостановка, обработка сбоев;
- WebView — интерфейс на Windows, macOS, Linux, Android и iOS;
- Capabilities — конкретные права вместо полного доступа;
- Permission Broker — единая точка контроля чувствительных операций;
- IPC Broker — взаимодействие приложений через сервисы;
- Workspace / Storage / Secrets — модель данных приложения;
- Package Manager — установка, обновление и проверка пакетов.
Один и тот же код работает на пяти платформах, а распространение — через файл .axn, а не через пересборку под каждую ОС.
1.2Модель приложения
Минимальное приложение — это папка с index.html и manifest.json. Rust для него не нужен.
my-app/ ├── manifest.json # описание и запрашиваемые права ├── index.html # интерфейс (точка входа) ├── style.css # стили (по желанию) ├── script.js # логика (по желанию) ├── icon.png # иконка (по желанию) └── assets/ # ресурсы, доступные относительно entry
Во время работы движок держит для приложения три области данных:
- workspace — каталог проекта, в который приложение получило доступ;
- storage — персистентное хранилище приложения (ключ–значение);
- secrets — защищённое хранилище для токенов и ключей.
1.3Жизненный цикл
Состояния приложения управляются движком, приложение лишь подписывается на события:
- installed — пакет зарегистрирован в Package Manager;
- launching — движок проверяет manifest и capabilities;
- running — WebView загрузил
entry.html; - suspended — приложение свернуто, рантайм приостановлен;
- terminated — остановка по запросу, сбою или завершению работы ОС.
Переходы отражаются событиями app.resumed и app.suspended (см. пункт 5.5).
1.4Термины
| Термин | Значение |
|---|---|
| Engine | Rust-рантайм, который выполняет приложение |
| CLI | Инструмент командной строки axion |
| manifest | manifest.json — описание приложения и прав |
| capability | Конкретная возможность (право) приложения |
| scope | Область действия capability (workspace, storage, values, any) |
| permission | Решение пользователя по конкретной capability |
| ticket | Одноразовый запрос на разрешение |
| workspace | Логический проект/каталог приложения |
| package (.axn) | Распространяемый файл приложения |