Skip to content

工作原理

介绍中我们提到,Three.js Platform Adapter 由三部分组成。下面将分别介绍每一部分的职责与作用。

通用兼容层

对应包:@minisheep/mini-program-polyfill-core 及其子包。

该部分用于补全小程序环境中缺失但 three.js 依赖的核心 Web API,例如:

  • EventTarget
  • XMLHttpRequest
  • fetch
  • TextDecoder / TextEncoder
  • URL
  • 等其他,详见模块声明。

这些 polyfill 实现可独立于本项目使用,适用于任何需要在小程序环境下模拟标准 Web API 的场景。

平台兼容层

对应包:@minisheep/three-platform-adapter 及其平台插件(如 @minisheep/three-platform-adapter/wechat)。

该部分主要职责包括:

  • 补全小程序环境中缺失的 window 和常用 DOM API;
  • 提供平台级的工具函数,如获取 canvas 实例、触摸事件透传等;
  • 配合运行时事件代理机制,确保事件系统的兼容性和灵活性。

自动化插件

对应包:@minisheep/three-platform-adapter/plugin,主要负责构建阶段的自动处理,具体功能包括:

  • 全局变量代理:在构建时自动将 three.js 中使用的全局变量(如 window.xxxURL.createObjectURL)替换为 THREEGlobals.window.xxxTHREEGlobals.URL.createObjectURL,实现无污染的 polyfill 方案。

  • 模块使用分析与资源替换:自动识别你在项目中引入的 three/examples/jsm 模块,若其中使用了 WorkerWASM,会:

    • 替换为适配小程序环境的版本;
    • 自动拷贝相关的 WorkerWASM 文件至构建产物目录,避免手动配置和搬运。