Skip to content

@cron-zen/vanilla ​

无框架可视化适配:纯 DOM + TypeScript,不依赖 Vue / React。适合原生页面、任意框架壳,或只要 createCronZen 无头状态机。

和 core 的区别

core 只有解析 / 生成 / 校验等引擎 API,没有点选 UI。
vanilla = 引擎 + mountCronZen 可视化。

导出 ​

导出用途
mountCronZen挂载完整编辑器到 DOM
createCronZen无头状态机(自绘 UI)
displayFieldValue预览区字段串

并再导出常用 core API(parseCron / generateCron 等)。

安装 ​

bash
pnpm add @cron-zen/vanilla @cron-zen/core
html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@cron-zen/vanilla@0.2.4/dist/cron-zen-vanilla.css" />
<script src="https://cdn.jsdelivr.net/npm/@cron-zen/vanilla@0.2.4/dist/cron-zen-vanilla.browser.js"></script>
<script>
  CronZen.mountCronZen('#cron', { value: '', onChange: console.log })
</script>
js
import { mountCronZen } from '@cron-zen/vanilla'
import '@cron-zen/vanilla/style.css'
js
const { createCronZen } = require('@cron-zen/vanilla')

cron-zen-vanilla.browser.js:单文件 IIFE(内联 core)→ 全局 window.CronZen。更多 → 引入方式

mountCronZen ​

js
const api = mountCronZen('#app', {
  value: '',           // 空 = 不注入默认
  debounceMs: 0,
  nextCount: 10,
  showPreview: true,
  onChange(expr, state) {
    console.log(expr, state)
  },
})

api.getValue()
api.setValue('0 0 9 * * ?')
api.flush()
api.reset()
api.destroy()
选项默认说明
value''初始表达式
onChange—(expression, state) => void
debounceMs0写回防抖
nextCount10近 N 次 / 近 N 次已触发(≤100)
showPreviewtrue底部预览(含 next / prev)
weekFormat'number''abbr' 输出 MON…SAT
timeZone本地IANA 时区(近 N 次)
localezh-CN自然语言 / Tab / 常用模板:zh-CN | en-US

UI 含顶部「常用模板」下拉;createCronZen / getSnapshot() 提供 nextRuns 与 prevRuns。

createCronZen ​

无 DOM,行为对齐 vue3 useCronZen:

ts
import { createCronZen } from '@cron-zen/vanilla'

const ctrl = createCronZen({ debounceMs: 0, nextCount: 5 })
ctrl.updateField('hour', { mode: 'specific', raw: '8', value: '8' })
const snap = ctrl.getSnapshot()
console.log(snap.expression) // * * 8 * * ?
console.log(snap.nextRuns, snap.prevRuns)
ctrl.destroy()

与 Vue 包 ​

vanillavue3 / vue2
运行时浏览器 DOMVue 3 / 2.7
挂载mountCronZen(el)<CronZen />
无头createCronZenuseCronZen
引擎均依赖 @cron-zen/core同左

Released under the MIT License.