自己动手打造基于 WKWebView 的混合开发框架(三)——设计插件协议以兼容 Cordova
这篇讲的是如何从零构建一个基于 WKWebView 的混合开发框架,并重点实现与 Cordova 插件的完全兼容。作者的目标很明确:让你已有的 Cordova 项目能无缝、无感知地迁移到自研的高性能框架上。 核心思路是打通 JS 与 Native 之间完整的双向数据通道。文章详细拆解了实现过程:首先通过 `window.webkit.messageHandlers` 建立了 JS 到 Swift 的传值与调用机制,并用 Console 插件作为示例。接着,为了解决 Swift 向 JS 的异步回调问题,作者设计了一个基于队列(Queue)的管理系统,每次调用将回调函数压栈并传递序号,Native 处理完再凭序号回调,从而完美复刻了 Cordova 的插件调用模式。 文章的巧妙之处在于,作者没有止步于零散的调用实现,而是进一步抽象设计了统一的 `Plugin` 基础类和插件协议。这个协议规范了 JS 层如何封装调用数据(包含 className、functionName、data 及回调 taskId),以及 Native 层如何统一反射、分发请求并管理回调。这使得新增一个兼容 Cordova 的插件变得结构清晰、流程标准。最终,这套设计被整合为一个名为 BlackHawk 的纯 Swift 开源项目,为追求性能与可控性的团队提供了一个切实可行的 Cordova 替代方案。