工作原理
在介绍中我们提到,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.xxx
、URL.createObjectURL
)替换为THREEGlobals.window.xxx
、THREEGlobals.URL.createObjectURL
,实现无污染的 polyfill 方案。模块使用分析与资源替换:自动识别你在项目中引入的
three/examples/jsm
模块,若其中使用了Worker
或WASM
,会:- 替换为适配小程序环境的版本;
- 自动拷贝相关的
Worker
和WASM
文件至构建产物目录,避免手动配置和搬运。