window.JZ как мини-фреймворк — твоя панель инструментов из действий
Одно действие — это кнопка и код. Но действия могут вызывать друг друга — и с этого момента ты держишь в руках маленький фреймворк. window.JZ позволяет строить сложные многошаговые воркфлоу из кнопок.
Что такое window.JZ
В коде любого правила или действия доступен объект window.JZ — API для управления панелью действий JustZix:
JZ.click('LBL')— программно кликни действие с меткой «LBL».JZ.action('LBL')— получи DOM-элемент кнопки.JZ.actions()— массив всех видимых действий.JZ.labels()— массив меток.
Поиск игнорирует регистр: JZ.click('save') эквивалентно JZ.click('SAVE').
Паттерн 1 — действие-оркестратор
Три действия делают каждое по одной вещи, четвёртое складывает их в последовательность:
// Действие "AUTO" — выполняет три других по порядку
JZ.click('LOAD');
setTimeout(() => JZ.click('PROC'), 500);
setTimeout(() => JZ.click('SAVE'), 1500);
Ты тестируешь каждое из трёх составляющих действий само по себе; «AUTO» только дирижирует ими. Это тот же принцип, что у функций, вызывающих функции.
Паттерн 2 — условное действие
// Действие "SMART" — поведение зависит от состояния страницы
if (document.querySelector('.logged-in')) {
JZ.click('EXPORT');
} else {
JZ.click('LOGIN');
}
Паттерн 3 — цикл по действиям
JZ.actions() и JZ.labels() позволяют обращаться с панелью как с данными:
// Действие "ALL" — активирует каждое действие, чья метка начинается на "T"
JZ.labels()
.filter(l => l.startsWith('T'))
.forEach(l => JZ.click(l));
Почему это работает как фреймворк
У тебя есть единицы (действия), способ их вызова (JZ.click), интроспекция (JZ.actions/labels) и композиция (действие, вызывающее действия). Этого достаточно, чтобы построить многошаговый инструмент из панели кнопок — без какой-либо внешней библиотеки.
Ловушки
- Тайминг.
JZ.clickмгновенен, но эффект действия (например, fetch) — нет. Поэтому оркестратор используетsetTimeout; ещё лучше — сделай так, чтобы действия сигнализировали о завершении через общую переменную. - Метки — это контракт. Действие-оркестратор вызывает другие по метке — переименование метки «LOAD» отцепляет «AUTO». Обращайся с метками как с именами функций.
Смотри также
- window.JZ helpers — полный API действий
- Действие КНОПКА — единица, которой ты дирижируешь
- Три действия, заслуживающие места — готовые действия для композиции
Установи JustZix — и построй из кнопок что-то большее, чем кнопка.
Оцени эту статью
Оценок пока нет — оцени первым.