麻烦前端大佬看看, THREE 项目重写

2023-09-04 11:47:56 +08:00
 johnman

麻烦前端大佬看看

原来有一个 THREE.JS 项目是一个 index.html 直接包含了 three.min.js 和一堆 js 文件。 包含 three.min.js 之后,有了一个全局的 THREE 对象 后面那一堆 js 便对 THREE 这个对象增加了一系列的函数与变量,并且互相引用

示例 EVALoader.js
THREE.EVALoader = function(onLoad, url, options){
	// todo something
}

THREE.AAA = function(){
    // todo something
}

THREE.BBB = function(){
    // todo something
}

打算用 node 改写, 我能想到的方法: 就是也导出一个对象 THREE ,然后每个 js 改写 THREE 的地方,直接引用这个对象并增加函数和变量

这样可行吗?

globals.js 文件

import * as THREE from "three";
window.THREE = THREE;
export default THREE;
EVALoader.js 文件

import * as THREE from "globals"

THREE.EVALoader = function(onLoad, url, options){
    // todo something
}

THREE.AAA = function(){
    // todo something
}

THREE.BBB = function(){
    // todo something
}

如果可行,其他文件直接从 globals 引入 THREE 就可以使用 EVALoader 这个函数?

2319 次点击
所在节点    程序员
22 条回复
kongkx
2023-09-04 18:16:39 +08:00
@johnman #17 建议多看看 three.js 的文档,以及示例。 估计有不少是 官方 addon
johnman
2023-09-04 22:38:45 +08:00
@nsjs
用了最土的办法

globals.js
import * as MYTHREE from "three";

global.THREE = MYTHREE;
global.EVA= EVA;

console.log("start THREE", global.THREE);
console.log("start THREE", global.EVA);

export default MYTHREE;

在 main.js 里面 import 了
globals/EVALoader/EVAOptions/EVAPreviews....等等一大堆相互注入依赖的 js ,就搞定了。

然后在全局暴露了 THREE 和 EVA

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/970724

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX