Skip to content
  1. Компоненты
  2. VueTools

VueTools

Базовый пакет: даёт компонентам MODX 3.x общий стек Vue 3 (Vue, Pinia, PrimeVue) через ES Modules Import Map. Несколько компонентов используют одни и те же библиотеки, а не копируют их в свою сборку.

Что решает

Без общего пакета каждый компонент включает свою копию Vue, Pinia и PrimeVue. VueTools отдаёт их один раз на всю панель управления.

  • Единая версия библиотек у всех компонентов.
  • Библиотеки загружаются один раз и кэшируются браузером.
  • Стили PrimeVue изолированы от ExtJS панели MODX.
  • Готовые composable для работы с MODX: useLexicon, useApi, useModx, usePermission, usePrimeVueLocale, useTheme.
  • Единая тема оформления, переключаемая одной системной настройкой (с версии 1.2.0).

Состав пакета

БиблиотекаВерсияНазначение
Vue 33.5.xРеактивный фреймворк
Pinia3.0.xУправление состоянием
PrimeVue4.5.xUI-компоненты, темы Aura и Modx
PrimeIcons7.0.xИконки
ComposableНазначение
useLexiconЛексиконы MODX
useApiHTTP-клиент к стандартному connector API MODX
useModxДоступ к объекту window.MODx
usePermissionПроверка прав пользователя
usePrimeVueLocaleЛокали PrimeVue для DataTable, DatePicker, Calendar
useThemeАктивная тема из настройки vuetools.theme

Требования

ТребованиеВерсия
MODX Revolution3.0.0+
PHP8.1+
БраузерES Modules (Chrome 89+, Firefox 108+, Safari 16.4+, Edge 89+)

Установка

  1. Откройте Приложения → Установщик.
  2. Нажмите Загрузить дополнения.
  3. Найдите VueTools и нажмите Загрузить, затем Установить.

После установки пакет активируется сам: Import Map, стили PrimeVue и клиентская настройка темы регистрируются на всех страницах панели управления.

Как работает Import Map

Плагин VueCoreManager срабатывает на событие OnManagerPageBeforeRender и вставляет в начало <head> два блока: Import Map и клиентскую настройку темы window.VueTools.

json
{
  "imports": {
    "vue": "/assets/components/vuetools/vendor/vue.min.js",
    "pinia": "/assets/components/vuetools/vendor/pinia.min.js",
    "primevue": "/assets/components/vuetools/vendor/primevue.min.js",
    "vuetools": "/assets/components/vuetools/vendor/primevue.min.js",
    "vuetools/theme": "/assets/components/vuetools/vendor/primevue.min.js",
    "@vuetools/useApi": "/assets/components/vuetools/composables/useApi.min.js",
    "@vuetools/useLexicon": "/assets/components/vuetools/composables/useLexicon.min.js",
    "@vuetools/useModx": "/assets/components/vuetools/composables/useModx.min.js",
    "@vuetools/usePermission": "/assets/components/vuetools/composables/usePermission.min.js",
    "@vuetools/usePrimeVueLocale": "/assets/components/vuetools/composables/usePrimeVueLocale.min.js",
    "@vuetools/useTheme": "/assets/components/vuetools/composables/useTheme.min.js"
  }
}

Когда модуль компонента выполняет import { ref } from 'vue', браузер находит ключ vue в Import Map и загружает файл по указанному пути. Каждый URL несёт параметр ?v= по времени изменения файла — после обновления пакета браузер берёт свежую сборку, а не старую из кэша.

Ключ vuetools/theme ведёт на ту же сборку, что primevue, и служит признаком версии с поддержкой темы: по нему компонент отличает VueTools 1.2.0+ от более старого (см. Тема).

Изоляция стилей

Стили PrimeVue изолированы префиксом .vueApp, чтобы не конфликтовать со стилями ExtJS. Контейнер каждого Vue-виджета должен иметь класс vueApp:

html
<div id="my-vue-app" class="vueApp"></div>

Внимание

Без класса vueApp стили PrimeVue к виджету не применятся.

Прежнее название

Ранее пакет назывался ModxProVueCore и был переименован в VueTools.

Дальше

Поддержка

GitHub Issues: modx-pro/vuetools