工作原理
介绍中提到了本项目由三部分组成,这里一一介绍其作用。
通用兼容层
即 @minisheep/mini-program-polyfill-core
及其子包。用于补充小程序执行环境缺失的,但又在 three
中使用到的 Web API
,例如:EventTarget
/ XMLHttpRequest
/ Fetch
/ TextDecoder
/ TextEncoder
/ URL
等。 这个包不仅仅只能用于本项目,你可以用于任何你需要的地方。
平台兼容层
即 @minisheep/three-platform-adapter
和对应的平台插件如 @minisheep/three-platform-adapter/wechat
。主要用于补充小程序执行环境缺失的 window
API 和 DOM
对象,及一些小程序实用的工具方法,事件代理等。
自动化插件
即 @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
复制到产物目录。