SuperAPI AI 工具集

arrow-js-obsidian-templates

前端与建站

查看项目

更新于 10-15 23:48

技能介绍

用途:该技能用于在浏览器与 Obsidian 插件中正确编写 @arrow-js/core(v1.0.6)的 html`` 模板。多条规则属于运行时报错,而非风格问题。

核心规则(响应式 vs 静态):${value} 只在挂载时读取一次,${() => value} 会被追踪,仅在该插槽所依赖的响应式数据变化时重跑。忘记写成箭头函数是最常见的「为何不更新」错误。

属性:属性表达式必须是整个属性值。像 "tab ${…}" 这样的部分值不会被登记为占位符,会抛出 Invalid HTML position,需在一个表达式中拼出完整字符串。属性表达式返回 false 会移除该属性(返回 "" 仅保留空值),适合切换 disabled/hidden。

属性、事件与列表:用 .prop 绑定 IDL 属性,用 @event 绑定事件,用 .key(id) 生成带 key 的列表;带 key 的列表在重排时保留 DOM,建议就地修改条目字段以获得细粒度更新,而非整体替换数组。

异步区块:可从 @arrow-js/framework 引入 boundary,客户端即可使用、无需 SSR;boundary() 只接受 { idPrefix },可见的加载状态来自异步组件自身的 fallback 选项。

事件处理器类型:@event 处理器必须可赋值给 (e: Event) => void。参数写成更窄的子类型会因参数逆变导致 tsc 报 TS2345(不可赋值给 'ArrowExpression'),应将参数标注为 Event 并在内部收窄;无参处理器始终可用。

硬性陷阱:渲染期失败——模板内不能有字面 HTML 注释(<!-- … -->),它会被当作表达式插槽标记而抛 Invalid HTML position,JS 注释需放在模板外;也不能有部分属性值。类型期失败——@event 处理器不得使用收窄的事件子类型。CI 用 test/template-footguns.test.mjs 扫描注释和内联收窄处理器,其余由 tsc 覆盖。另有 tsc 静默通过但渲染失败的情况:通过 as unknown as ArrowTemplate / ArrowExpression 双重断言会掩盖类型问题,运行时渲染为转义文本或 [object Object];应改用真实模板表达式或带显式类型守卫的辅助函数。

限制与范围:本条只覆盖 html`` 模板本身。响应式与命令式 DOM(浮动 UI、定位、焦点)相关的另一类陷阱见 arrow-js-obsidian-patterns 技能与 docs/arrow-notes.md,在构建弹出层、菜单或任何定位元素前应先阅读。资料未提供安装命令、收费与许可信息。