es6 导入 three.js

es6 Import of three.js

我的 es6 工作流程使用 babel 和 babel-plugin-transform-es2015-modules-system.js 到 only 转换模块 import/export 与 system.js。我只是将 "green" 浏览器用于所有 es6 功能,除了模块的 import/export .. 这是 whatwg 标准,因此不是 "es6".

这适用于遗留(非 es6)库,我可以 "import" 我需要的所有 npm 包。不知何故,babel,只有 babel 模块转换,system.js 神奇地工作。

three.js除外。我尝试了所有三个版本:three.js、three.min.js 和 three.modules.js。前两个默默地失败,导致 "undefined" 模块。第三个失败了,想要 traceur ..我猜是为了一个 system.js-like transform?

那么我需要做什么才能在我的 es6 世界中使用 three.js?

我想我可以只使用一个 <script> 标签和一个全局标签来表示三个。或者可能使用 rollup/webpack 来消除模块?

但我敢打赌有一个合理的解决方案。毕竟three.js内部使用的是es6模块

发行版中存在错误(仅发布一天!)。我修好了,但仍然有问题。但是我确实发现这确实有效:

import * as THREE from 'etc/three.js'

..但更明显的版本,

import THREE from 'etc/three.js'
or
import 'etc/three.js'

似乎不​​起作用。

让我知道你是否比这个更好地理解这个,这是非常随机的。

我刚刚遇到了同样的问题,但意识到 THREE 不导出 THREE,而是导出所有不同的模块。 使用导出检查 three.js 文件中的部分:

exports.WebGLRenderTargetCube = WebGLRenderTargetCube;
exports.WebGLRenderTarget = WebGLRenderTarget;
exports.WebGLRenderer = WebGLRenderer;
exports.ShaderLib = ShaderLib;
exports.UniformsLib = UniformsLib;
exports.UniformsUtils = UniformsUtils;
exports.ShaderChunk = ShaderChunk;
exports.FogExp2 = FogExp2;
exports.Fog = Fog;
exports.Scene = Scene;
exports.LensFlare = LensFlare;
exports.Sprite = Sprite;
exports.LOD = LOD;
exports.SkinnedMesh = SkinnedMesh;
exports.Skeleton = Skeleton;
exports.Bone = Bone;
exports.Mesh = Mesh;
exports.LineSegments = LineSegments;
exports.Line = Line;
exports.Points = Points;
exports.Group = Group;

...等等

所以你可以只导入你真正需要的模块,或者像上面说的那样: 通过

全部导入
 import * as THREE from 'three.js'

干杯