Skip to content

指令能力矩阵

本页给出指令的运行时边界。所有表达式指令仅适用于项目源码或其他可信模板;Kupola 使用 new Function(),不是表达式沙箱。

指令元素 / 参数关键限制清理与冲突
k-data作用域根仅追踪顶层属性;深层变更需要重新赋值顶层值嵌套 scope 独立
k-text / k-html任意元素k-html 仅接受可信或已 sanitizer 的内容destroy 停止 effect
k-bind / :attr任意元素敏感 URL 与执行上下文受策略限制不与 k-model 竞争 value / checked
k-on / @event任意元素 / 事件名.outside.capture.debounce 可组合;未知修饰符诊断destroy 移除 listener 与 timer
k-modelinputselecttextarea不支持 file、contenteditable;只更新顶层 scope key不与动态 value / checked 竞争
k-show任意元素保留 DOM;可配 k-transitiondestroy 取消过渡
k-if相邻兄弟节点每个元素只写一个分支;不能与 k-for 混写分支切换清理 effect、event、ref
k-for行模板无 key 时整表重建;object 的 index 是属性名列表移除清理行资源
k-key / :keyk-for 同一元素单次渲染内唯一、稳定;优先级见下文重复 key 为 W004
k-ref任意元素refs 是 scope / walk 的元素索引,不是跨 root 全局状态移除节点时清理
k-class / k-style任意元素k-style 不是 CSS sanitizer不与同属性的 k-bind 混用

结构指令

k-ifk-else-ifk-else 必须相邻,且同一元素只写一个分支指令。k-for 不能和 k-else-if / k-else 写在同一节点;k-for + k-if 虽可诊断但应拆成外层分支与内层列表,使生命周期可预测。

列表 key 的唯一优先级是:k-key:keyk-bind:key。多个写法同时出现为 W021,空 key 为 W001。无 key 列表每次源值重新赋值都会销毁并重建全部行,输入焦点、selection 与临时 DOM 状态会丢失。

表达式与服务端模板

服务端可以输出固定的指令属性和表达式,但不得把 URL 参数、CMS 内容或用户字符串拼接为表达式。严格 CSP 不允许 unsafe-eval 时,使用 signal()effect()render() 和原生 DOM 事件,避免模板表达式指令。

诊断码与可搜索示例见 诊断信息