state / harness / camera / pick / ui / sheets / render / urlparams。 经典脚本的顶层 const/let 落在同一个全局词法作用域,所以切片本身不改变任何行为—— 这一步先让"文件边界"与"模块语义"两件事分离:翻 ESM 时若出问题,责任清楚在 import/export,而不是切片切错了行。 切片踩到并修掉的:urlparams.js 被切掉了 IIFE 的收尾 })();(我按 len-2 收边界), node --check 当场报 Unexpected end of input。 截图基线分级也在这一步收敛:工程图/装配向导视图带 feGaussianBlur 发光滤镜, 同一构建两轮就有 ±1 抖动(先前扫描那两轮碰巧逐字节相同,才漏进"稳定"清单, 于是随机假 FAIL)。把 8 张工程图/向导视图连同 3 张线束 x-ray、boss_p07、 p03_mount_loose 一起转像素容差(存参考像素,阈值 mean<=0.02、单像素<=32, 约实测 20x 余量),其余 92 张仍要求逐字节相同。 关卡:92 张逐字节一致 + 13 张在噪声阈内;数据哈希与 IK exact 段一致。
13 lines
658 B
JavaScript
13 lines
658 B
JavaScript
/* three.js 适配层。
|
|
仓库里是 r159 的 UMD 构建(只有 build/three.min.js,没有离线 ESM 版),
|
|
所以仍由 index.html 用普通 <script> 先加载,本模块负责:
|
|
1) 把它转成真正的 ES 导出,业务代码一律 import 而不是抓全局;
|
|
2) 没加载就直接抛错,不要让 "THREE is not defined" 分散成几十个后续异常。
|
|
日后换成 ESM 构建时只改这一个文件。 */
|
|
const T = globalThis.THREE;
|
|
if (!T) {
|
|
throw new Error('three.js 未加载:index.html 里 vendor/three.min.js 必须在模块之前以普通脚本引入');
|
|
}
|
|
export const THREE = T;
|
|
export const V3 = T.Vector3;
|