es6导入three.js

问题描述 投票:8回答:2

我的es6工作流程使用babel和babel-plugin-transform-es2015-modules-system.js来转换模块导入/导出以与system.js一起使用。我只是使用“绿色”浏览器来处理除模块导入/导出之外的所有es6功能..这是一个标准,因此不是“es6”。

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

除了three.js。我尝试了所有三个版本:three.js,three.min.js和three.modules.js。前两个静默失败,导致“未定义”模块。第三个失败,想要跟踪..我想是一个类似system.js的变换?

那么我在es6世界中使用three.js需要做些什么呢?

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

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

javascript npm three.js ecmascript-6 es6-modules
2个回答
13
投票

发布中有一个错误(只有一天!)。我修好了但仍有问题。但我确实发现这确实有效:

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

..但更明显的版本,

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

似乎不起作用。

如果你比这更好地了解这一点,请告诉我,这是非常随意的。


5
投票

我只是遇到了同样的问题,但意识到THREE不会导出三个而是导出所有不同的模块。使用exports检查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'

干杯

© www.soinside.com 2019 - 2024. All rights reserved.