Общая архитектура
🏗️ Общая архитектура
Плагин Pano состоит из двух основных частей:
- Интерфейс плагина (UI): Фронтенд на основе Svelte, который работает как в Панели (интерфейс администратора), так и в Теме (общедоступный интерфейс).
- Бэкенд плагина: Бэкенд на Kotlin (предпочтительно) или Java, который интегрируется напрямую с хостом Pano.
Структура
Следующая структура каталогов иллюстрирует типичный плагин Pano на основе примера pano-plugin-announcement:
pano-plugin-announcement/
├── .github/workflows/ # Рабочие процессы CI/CD (Опционально) (например, release.yml)
├── build.gradle.kts/ # Конфигурация сборки Gradle
├── gradle.properties/ # Манифест плагина (ID, версия и т.д.)
├── package.json/ # Зависимости фронтенда и скрипты
├── rollup.config.js/ # Конфигурация сборки фронтенда
└── src/ # Исходный код
├── main/
│ ├── kotlin/ # Исходный код бэкенда
│ │ └── com/panomc/plugins/announcement/
│ │ ├── AnnouncementPlugin.kt # Основной класс плагина
│ │ ├── db/ # Модели баз данных и таблицы
│ │ ├── event/ # Слушатели событий
│ │ ├── log/ # Журналы активности
│ │ ├── permission/ # Определения разрешений
│ │ ├── routes/ # API маршруты
│ │ └── util/ # Утилиты
│ └── resources/ # Ресурсы бэкенда
│ ├── locales/ # Файлы перевода (en.json и т.д.)
│ └── config.conf # Конфигурация по умолчанию
├── panel/ # UI Панели (Интерфейс администратора)
│ ├── AnnouncementsPage.svelte
│ └── components/
├── theme/ # UI Темы (Общедоступный интерфейс)
│ └── Announcements.svelte
└── main.js # Точка входа фронтендаАрхитектура: Архитектура плагинов Pano уникальна и разработана для бесшовной обработки логики бэкенда, пользовательского интерфейса (SSR и CSR) и управления базами данных в единой структуре.
Хотя мы стремимся сделать эту структуру максимально простой и интуитивно понятной для разработчиков, это специализированная среда, адаптированная под нужды Pano.
Обратная связь
Мы всегда открыты для улучшения опыта разработчиков. Если у вас есть идеи или предложения по улучшению структуры плагинов, пожалуйста, свяжитесь с нами в Discord.
Под капотом она имеет сходство с плагинами Spigot, но использует PF4J для загрузки. Для получения более подробных технических сведений вы можете обратиться к документации PF4J.
Манифест: Плагины определяются с помощью файла манифеста. Pano упрощает это, управляя свойствами в
gradle.properties. Подробности см. в руководстве по Конфигурации манифеста.