Publii UTPF Loader

Робоче місце розробника з модульною структурою TinyMCE-плагінів та концепцією Publii UTPF Loader.

Publii UTPF Loader: від одного великого файлу до модульної архітектури

Коли починаєш розширювати редактор TinyMCE у Publii, спочатку все здається доволі простим. Створив власний плагін, вставив його код у tinymce.script.js — і можна працювати. Для одного або двох плагінів така схема виглядає цілком логічною.

Але з часом кількість власних інструментів (плагінів) зростає. До редактора додаються нові кнопки, діалогові вікна, функції форматування, автоматизація рутинних операцій. Разом із цим швидко збільшується і сам файл tinymce.script.js, який поступово перетворюється на величезне сховище коду.

Саме ця проблема стала відправною точкою для створення Publii UTPF[1] Loader — невеликого завантажувача, який відкрив шлях до модульної архітектури власних TinyMCE-плагінів.

Чому виникла проблема

Базова тема Publii дозволяє додавати власні TinyMCE-плагіни лише одним способом — розміщуючи їхній код безпосередньо у файлі tinymce.script.js.

На початку проєкту це навіть має свої переваги:

  • не потрібно створювати додаткові файли;
  • усі плагіни знаходяться в одному місці;
  • легко експериментувати.

Проте після десятого чи двадцятого плагіна ситуація кардинально змінюється.

Основні недоліки великого файлу

З'являються проблеми, знайомі майже кожному розробнику.

Пошук потрібного плагіна

Навіть сучасний редактор із функцією пошуку не завжди допомагає швидко знайти потрібний фрагмент серед тисяч рядків JavaScript.

Особливо це відчувається, коли потрібно:

  • виправити одну невелику помилку;
  • змінити назву кнопки;
  • оновити іконку;
  • додати нову можливість.

Замість кількох секунд доводиться витрачати хвилини лише на навігацію.

Важче супроводжувати код

Коли всі плагіни знаходяться в одному файлі, між ними починають з'являтися приховані залежності.

Виправлення одного плагіна може випадково вплинути на інший.

Чим більший файл, тим складніше зрозуміти його структуру навіть автору.

Неможливість повторного використання

Якщо окремий плагін хочеться використати в іншому проєкті, доводиться вручну вирізати його код, перевіряти залежності та виправляти посилання.

Фактично кожен плагін перестає бути самостійним модулем.

Народження ідеї Publii UTPF Loader

У певний момент стало зрозуміло, що проблема полягає не в самих плагінах, а в способі їх підключення.

Виникла проста думка:

А що, якщо tinymce.script.js більше не міститиме всі плагіни, а лише невеликий код, який автоматично завантажує окремі модулі?

Саме так і народилася концепція Publii UTPF Loader.

Його завдання максимально просте:

  1. запускатися замість великого набору плагінів;
  2. прочитати список доступних модулів;
  3. автоматично підключити кожен окремий плагін.

Таким чином tinymce.script.js перетворюється із величезного контейнера коду на компактний завантажувач.

Модульна архітектура

Після появи Loader кожен TinyMCE-плагін став окремим JavaScript-файлом.

Наприклад:

 plugins/

  • alert/ plugin.js
  • spoiler/ plugin.js
  • note/ plugin.js
  • gallery/ plugin.js

Тепер кожен модуль живе власним життям.

Його можна:

  • редагувати окремо;
  • тестувати незалежно;
  • копіювати між проєктами;
  • оновлювати без ризику пошкодити інші компоненти.

Це вже набагато ближче до сучасної архітектури програмного забезпечення.

Переваги Loader

Простіше читати код

Кожен файл має лише одну відповідальність.

Якщо потрібно змінити кнопку «Alert», відкривається лише відповідний модуль, а не файл з багатотисячними рядками.

Легше створювати нові плагіни

Новий модуль достатньо покласти у відповідну папку та додати його до списку завантаження.

Не потрібно редагувати величезний файл щоразу.

Менше ризиків

Помилка в одному модулі майже не впливає на інші.

Це значно спрощує налагодження.

Зручніше підтримувати проєкт

Коли плагіни мають окремі каталоги, кожен із них може містити:

  • власний JavaScript;
  • документацію;
  • приклади використання;
  • інформацію про версію;
  • файл ліцензії.

Такий підхід добре масштабується навіть для дуже великих колекцій плагінів.

Крок до Publii Universal TinyMCE Plugin Framework

Створення Loader стало не просто косметичною зміною структури проєкту.

Фактично саме з нього почав формуватися Publii Universal TinyMCE Plugin Framework (UTPF) — універсальний підхід до організації власних TinyMCE-плагінів для Publii.

Loader став фундаментом, на якому згодом з'явилися:

  • окремі каталоги плагінів;
  • автоматичне завантаження модулів;
  • централізований список доступних плагінів;
  • універсальна структура проєкту;
  • можливість переносити плагіни між різними темами Publii без копіювання великого обсягу коду.

І хоча сама ідея здається доволі простою, саме такі невеликі архітектурні рішення часто найбільше впливають на комфорт щоденної роботи.

Практичні висновки

  • Великий tinymce.script.js зручний лише на початковому етапі.
  • Зі збільшенням кількості плагінів його підтримка стає дедалі складнішою.
  • Виділення кожного плагіна в окремий модуль значно покращує читабельність і супровід коду.
  • Publii UTPF Loader дозволяє залишити tinymce.script.js компактним, а всю логіку перенести до окремих файлів.
  • Саме Loader став першим кроком до створення повноцінного Publii Universal TinyMCE Plugin Framework, який значно спрощує розробку та підтримку власних розширень редактора.

Висновок

 Багато хороших архітектурних рішень народжуються не через бажання створити щось принципово нове, а як відповідь на щоденні незручності. Так сталося і з Publii UTPF Loader. Замість постійної боротьби з дедалі більшим файлом tinymce.script.js було запропоновано просту модульну модель, яка зробила код зрозумілішим, підтримку — легшою, а подальший розвиток проєкту — значно передбачуванішим. Згодом саме ця невелика ідея стала основою для створення Publii Universal TinyMCE Plugin Framework, що відкриває нові можливості для розширення редактора Publii без перетворення одного файлу на багатотисячний моноліт.

  1. [1] UTPF — це Universal TinyMCE Plugin Framework, тобто весь фреймворк, а Loader є лише його складовою.

Коментарі:

Завантаження коментарів…

Поділитися цим:

Оновлено: 1 липня 2026 року