SuperAPI AI 工具集

arrow-js-obsidian-patterns

前端与建站

查看项目

更新于 10-15 23:48

技能介绍

该技能用于在 @arrow-js/core 基础上为 Obsidian 插件视图构建真正的响应式组件,而不仅是模板语法,与 arrow-js-obsidian-templates 配套使用。

用途与主要能力:覆盖挂载/卸载生命周期、共享响应式状态、与命令式 DOM(浮动 UI)的结合、图标处理、CSS 作用域与选择器特异性,以及组件抽象前的调研方法。

使用方式与要点:视图在 ItemView.onOpen() 中先 this.contentEl.empty(),再用 html${MyComponent()}(this.contentEl) 命令式挂载;html(container) 不保证返回卸载函数,重渲染前始终清空容器,状态变化应让 Arrow 就地补丁而非整树重挂。用单个 reactive() 对象作为唯一数据源,组件通过 getter 读取。不要向 reactive() 放入 DOM 节点、类实例或函数,以免被深度代理;DOM 引用放在普通闭包变量中。requestAnimationFrame 在后台标签页会暂停,关键 DOM 工作用微任务(nextTick/queueMicrotask/setTimeout);浮动元素始终挂载,切换 is-hidden 类;开关副作用放在 class/style 的 getter 中而非 watch 或纯副作用插槽。图标方面 Obsidian 使用 Lucide,setIcon(el,name) 需要真实 DOM,无法在模板表达式内调用,可先输出 data-icon 占位再在挂载后扫描,作用域限定到容器;沙盒环境从 ./icons.ts 导入 icon()。CSS 上应优先使用 Obsidian 自带类与 var(--…) 变量,自定义规则需按容器类+元素类型限定以提升特异性。组件抽象前先通读该区域所有手写实现,找出重复 DOM 结构与类模式,再从真实共享片段中提取。

适用场景:Obsidian 插件中涉及弹出层、菜单、设置行、标签导航等交互 UI 的开发。限制:部分行为为实践观察结论(如 watch 不重跑),文档位于 docs/arrow-notes.md,未提供更多版本、平台或收费信息。