2016-10-25 9 views
6

私のワークフローでは、babelとbabel-plugin-transform-es2015-modules-system.jsからのみを使用します。 system.jsで使用する変換モジュールのインポート/エクスポート。私はモジュールのインポート/エクスポートを除くすべてのes6機能に "green"ブラウザを使用します。これはwhatwg標準であり、したがって "es6"ではありません。es6 three.jsのインポート

これは従来の(es6以外の)ライブラリでうまく動作します。必要なすべてのnpmパッケージを「インポート」できます。何とかbabelモジュールだけを変換し、system.jsは魔法のように動作します。

three.jsを除く。 3つのリリース(three.js、three.min.js & three.modules.js)で試してみました。最初の2つは黙って失敗し、「未定義」モジュールになります。 3番目は失敗し、トレースを望んでいます..私はsystem.jsのような変換を推測しますか?

したがって、私のes6の世界でthree.jsを使用するには何が必要ですか?

私はちょうど<script>タグと3つのグローバルを使用することができますね。あるいは、ロールアップ/ウェブパックを使用してモジュールを削除することもできますか?

しかし、妥当な解決策があると思います。結局、three.jsは内部的にes6モジュールを使用します。

答えて

12

リリースにバグがありました(わずか1日前です)。私はそれを修正したが、まだ問題があった。

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

を..しかし、より明白バージョン、

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

が動作しているように見えません。しかし私は、これが作業を行うことがわかりました。

あなたがこれよりも優れていると私に知らせてください。これはかなりランダムです。

+0

を経由してバグレポートをリンク、またはあなたがどのように修正しなければならなかったかについて具体的にしてください。 – Bergi

+1

これは見えない文字です。https://github.com/mrdoob/three.js/issues/9939を参照してください。これは今や新しいリリースで修正されているので、npmのインストールはうまくいくはずです。新しいリリースのリンクからダウンロードするだけです。 – backspaces

+2

私はまた、 'import'を 'three'から 'three'として使用しました。これはWebpackでOKをコンパイルします。乾杯! – Bert

3

私はちょうど同じ問題を抱えていましたが、THREEは3つではなく、すべての異なるモジュールをエクスポートすることに気付きました。 輸出と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' 

乾杯

+0

甘い!私は3つの&モジュールを突き詰めようとしている間、それを横断しました。私は必要なものだけをインポートしようとしていない。したがって、メッシュをインポートすると、依存関係もインポートされますか?私。モジュール推移閉鎖? – backspaces

+0

私は、推移的閉包という言葉を探しましたが、その文脈でどのようにそれがどういう意味なのか分かりません。これは、依存関係をインポートするかどうかという良い質問です。コードを見て調べようとしましたが、まだ分かりません。私はそれが少なくともファイルにインポートがないとは思わない傾向があります。 1つの大きなものではなく、すべてのモジュールをエクスポートすると、3つの異なる部分に簡単にアクセスできます。 '新しいTHREE.Mesh()を介して。しかし、私は事実を知ることに興味があるだろう。だから、あなたがそれをテストしたときに教えてください。 – Merc

+0

興味や情報をありがとう!そしておそらく間違った(!)過渡的な閉鎖の使用のために申し訳ありません:)。私が意味することは、インポートがそのインポートのすべての依存関係とすべての依存関係をドラッグするということです。依存関係の "グラフ"全体。私はpackage.jsonを見て、ランタイム依存性がなく、依存関係を構築するだけで満足していました。また、ソースファイルを無作為にチェックすると、インポートとエクスポートの両方のステートメントがあります。https://github.com/mrdoob/three.js/blob/dev/src/core/DirectGeometry.js – backspaces

関連する問題