架构
接下来我们将了解ov0运行时机制。
框架跨平台的实现基础
传统的跨平台(指聊天平台接口)开发框架是通过在框架的内部指定好统一的事件发布字段并通过适配器将聊天平台的接口转换为统一的事件字段,这样虽然有利于事件订阅者也就是常规插件的开发者直接使用订阅的事件类型,但不利于事件字段的扩展,尤其是各平台可以拥有更为细粒度的接口,平台的兼容压力都落在框架层。ov0则提供了更加灵活的机制,其事件订阅方法的接收事件类型可以通过Listener类中指定适配器的名称动态提供,这样订阅者将能直接使用到不同适配器直接提供的字段,
约定大于配置
为了最大程度适配各个平台,同时提供全面的事件类型提示,ov0本身不提供任何的插件事件接收与适配器事件发布的字段标准(消息链除外),这意味着你可以定制任意的消息订阅与发布数据。虽然ov0本身提供了适配平台的方法,但为了降低插件开发适配平台的成本,ov0推荐采用onebot11的事件标准开发任意平台的适配器
消息链:ov0提供了消息链基类并符合onebot11标准,你可以在此基础上进行扩展,当然,基类是为了统一消息段发送格式以让ov0提供更加方便的消息段处理工具
钩子
如果你熟悉vue或react,你应该对钩子概念有或多或少的认识,ov0中每个用Listener.on注册的监听器可以看做一个个的组件,每次事件触发都相当于一次组件的刷新,但和前端组件钩子不同的是,ov0的钩子函数更多的是提供便捷的实用类工具,无论是维护监听器的状态、消息链的链式调用发送、各个监听器之间传递上下文,你都可以用钩子便捷的实现。