Skip to content

Общая архитектура

🏗️ Общая архитектура

Плагин Pano состоит из двух основных частей:

  1. Интерфейс плагина (UI): Фронтенд на основе Svelte, который работает как в Панели (интерфейс администратора), так и в Теме (общедоступный интерфейс).
  2. Бэкенд плагина: Бэкенд на Kotlin (предпочтительно) или Java, который интегрируется напрямую с хостом Pano.

Структура

Следующая структура каталогов иллюстрирует типичный плагин Pano на основе примера pano-plugin-announcement:

text
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. Подробности см. в руководстве по Конфигурации манифеста.