window.JZ 作为迷你框架 —— 用动作搭出你自己的工具面板
单个动作是一个按钮加一些代码。但动作可以互相调用 —— 从那一刻起你手里就握着一个小框架。window.JZ 让你从按钮里搭出复杂的多步工作流。
window.JZ 是什么
在任何规则或动作的代码里,window.JZ 对象都可用 —— 一个驱动 JustZix 动作栏的 API:
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 辅助函数 —— 动作的完整 API
- BUTTON 动作 —— 你编排的那个单元
- 三个值得占位的动作 —— 可供组合的现成动作
安装 JustZix —— 用按钮搭出比一个按钮更大的东西。
为这篇文章评分
暂无评分 — 成为第一个。