自动拷贝资源 & 分包支持
常见问题
在解决了兼容问题以后, 在小程序中使用 three.js
通常还会遇到另一些问题,例如:
worker
处理: 小程序一般是不支持动态worker
的, 即通过链接加载的worker
,而three
模块中用的都是这种方法,所以需要开发者手动处理源码导出成js
文件, 然后复制到项目中来。wasm
处理: 同上,小程序也仅支持本地wasm
,也需要开发者手动复制。- 包大小限制:不管是
three.js
主包还是three/examples/jsm
里的模块资源,都是动辄数百 KB 的存在。更不必说使用到的wasm
了,随便引用几个模块包大小就超过了 2M。 这就导致了需要开发人员浪费大量精力在解决包大小限制的问题上。
所以我们设计了一整套自动化方案,让开发者仅需一点配置,轻松解决上述问题。
自动拷贝使用到的 worker 和 wasm
@minisheep/three-platform-adapter/plugin
导出的插件默认自动收集使用到的 worker
和 wasm
, 会将资源输出到产物目录的 wasms
和 workers
文件夹,并自动修改相应的代码引用,你也可以自定义其输出目录,不影响其正常逻辑。
例如将目录改成 package-worker
和 package-wasm
:
js
import threePlatformAdapter from '@minisheep/three-platform-adapter/plugin';
export default {
plugins: [
//...
threePlatformAdapter({
assetsOutput: {
wasm: 'package-wasm',
worker: 'package-worker'
}
})
//...
]
}
你也可以使用 brotli
压缩版本的 wasm
,以明显减小包大小的使用:
js
threePlatformAdapter({
//默认使用, 但需要小程序平台支持
useBrotli: true
})
更多配置见 详细配置。
分包支持 & 平衡包大小
你可以通过简单配置,自动分割模块,以平衡包大小避免触发限制,具体使用见 to-custom-chunk。