Template Bridge API
Template Bridge API 用于模板函数注册、函数调用、事件发送和事件监听。默认连接本机 Bridge:ws://127.0.0.1:5176。
导出 API
| API | 说明 |
|---|---|
useTemplateBridge() |
获取默认 Bridge 实例。 |
registerTemplateFunction(name, handler, definition?) |
注册当前模板可被外部调用的函数。 |
unregisterTemplateFunction(name) |
注销已注册函数。 |
invokeTemplateFunction(target, functionName, args?, options?) |
调用本地、绑定规则或其他设备上的模板函数。 |
emitTemplateEvent(channel, payload?, target?) |
兼容旧事件总线,发送模板事件。 |
onTemplateEvent(channel, handler) |
监听模板事件。 |
注册函数
import { registerTemplateFunction } from 'auto-exhibition-template-sdk'
const stop = registerTemplateFunction('playVideo', async (args, context) => {
console.log(context.messageId, args)
return { ok: true }
}, {
label: '播放视频',
direction: 'inout'
})
// 组件卸载或页面释放时可注销
stop()
调用函数
import { invokeTemplateFunction } from 'auto-exhibition-template-sdk'
const result = await invokeTemplateFunction(
{ mode: 'binding', sourceFunction: 'playVideo' },
'playVideo',
{ id: 'intro', seekTo: 0 },
{ timeoutMs: 3000 }
)
target.mode
| mode | 用途 |
|---|---|
local |
同一设备内的模板页之间调用,用于本地调试或多模板页面。 |
binding |
交给网关按后台配置的函数绑定规则展开目标。 |
unicast |
直接调用指定 clientId 的设备模板。 |
multicast |
调用一组设备。 |
broadcast |
广播给所有在线设备。 |
事件兼容
旧模板仍可继续使用事件模型;新项目建议函数调用用于明确动作,事件用于松散通知。
const off = onTemplateEvent('scene:switch', event => {
console.log(event.payload)
})
emitTemplateEvent('scene:switch', { scene: 'intro' }, { mode: 'broadcast' })
注意:
configJson.functions 只是能力声明,真正可执行的 handler 必须在运行时通过 registerTemplateFunction 注册。