不用 React
通过 <aora-bot> 自定义元素,在纯 HTML 或任何框架里使用 Aora Bot;如果连自定义元素都不想要,也可以直接调用引擎。
从 CDN 引入
一个 script 标签就是全部配置。这个文件自带引擎,加载时自动注册 <aora-bot>,不需要构建步骤。
建议在地址里固定版本,例如 @aora-bot/element@0.1.3,这样之后发布的新版本不会改变已经上线的页面。
jsDelivr 在中国大陆访问不稳定,从 CDN 引入的页面在大陆可能无法加载。用 npm 安装、随项目一起打包的方式不受影响。面向大陆用户的访问方案已在计划中。
安装
使用打包工具时,安装这个包,并在入口文件靠前的位置注册一次元素:
defineAoraBot(tagName = 'aora-bot') 返回元素类,重复调用是安全的。导入这个包不会碰 DOM,所以在服务端渲染或构建脚本里导入也没问题,只是那里的 defineAoraBot 什么都不会注册。@aora-bot/engine 作为依赖会一并安装。想从自己的域名提供打包好的单文件,导入 @aora-bot/element/cdn。
和其他包一样,它只提供 ESM。
属性
所有属性都是可选的。引擎不认识的值会回退到默认值,或回退到角色阵容成员的设定,不会抛错。
画风叫 style-id,因为 style 已经是内联 CSS 的属性名。修改属性会就地更新正在运行的角色。只有 seed、reduced-motion 和 auto-pause 是创建时读取一次的,修改它们会重新创建角色。
style-options 接收所选画风的参数,参数列表见各画风页面(vector、pixel、kaomoji)。把它们写成 JSON 对象,放进单引号属性里;不是 JSON 对象的值会被忽略,移除这个属性则恢复默认值。
元素带有 role="img",aria-label 是阵容成员的名字;最近的 lang 是 zh 时用中文名。自己设置了 aria-label 或 role,它们就不会被改动。
角色画在 shadow root 里,页面的 CSS 够不到里面。宿主是 display: inline-block;用 size 设置大小,也可以自己写 width 和 height。墨色跟随页面的 color-scheme,任意祖先上的 --aora-bg-base 决定眼睛镂空处的底色,详见主题。
方法
元素不在文档里时,这些方法什么都不做。
用 JavaScript 切换状态
每个属性同时也是驼峰命名的属性,所以 el.state = 'happy' 和 el.setAttribute('state', 'happy') 等价。正在运行的角色会被就地更新,弹簧状态也会保留,所以状态切换看起来是一次反应,而不是重新开始。
没有对应属性的选项,例如 followTarget 或 hud,调用控制器的 update:
不用自定义元素
如果不想注册自定义元素,@aora-bot/engine 以函数的形式提供同一个角色,@aora-bot/element 只是它外面薄薄的一层。
createCharacter 把一个 SVG 挂进宿主并返回控制器;移除宿主时记得调用 destroy()。在宿主上设置 --aora-fg 自定义属性,或传入 ink,墨色才会生效;否则角色用周围的文字颜色。其余内容见引擎 README。