我正在构建一个将THREE.js作为依赖项的模块。我试图找出将THREE作为依赖项包含在内的最佳方法,并使模块和模块用户可以访问它(用户需要访问项目中的THREE库)。我有两种方法可以解决这个问题:
一:
添加THREE作为模块的依赖项,将整个库导入模块并将其添加为全局变量,如下所示:
import * as THREE from 'three';
window.THREE = THREE;
这里的缺点是我负责使用什么版本的THREE,以及导入整个库(THREE最近已切换到模块化版本,因此不再需要包含整个库)。
两个
添加THREE作为模块的依赖关系和要求用户将其添加为项目的依赖项。这里的想法是我现在只能从项目中导入我需要的东西:
import { Scene, Camera } from 'three';
用户可以在项目中导入他们需要的内容,从而缩小文件大小。
这里的问题是现在安装了两个THREE副本,这些副本可能是不同且不兼容的版本。有没有办法将我的模块指向顶级模块,以便他们可以管理已安装的THREE版本?
答案 0 :(得分:1)
我所看到的方式与此类似,但我从未在制作过程中做过类似的事情,所以我个人并不了解它的实力:
main.js:
'use strict';
const three = require('three'),
mod = require('yourModule');
mod.init(three);
//...
yourModule.js:
'use strict';
let three = {};
function init(t) {
three = t;
}
//...
modules.export = {
init: init
//...
};
或者
main.js:
'use strict';
const three = require('three'),
mod = require('yourModule')(three);
yourModule.js:
'use strict';
module.exports = (three) => {
//...
};