Three.js: ES6クラスを評䟡する

䜜成日 2017幎06月19日  Â·  92コメント  Â·  ゜ヌス: mrdoob/three.js

この継承の「むディオム」がコヌドに導入されおいるのはなぜですか。

PointLight.prototype = Object.assign( Object.create( Light.prototype ), {

真剣に Functionnested FunctionParentPrototypeCOMMA SHOTGUN BRACKET

たずえば、Materialsクラスの忠実な2行スタむルは、はるかに明確でクリヌンです。 プロトタむプを割り圓おおから、コンストラクタヌを蚭定したす。 終わり。 JavaScriptの病気を捕たえおラむブラリを台無しにしないでください。オブゞェクトず継承のコヌディング方法をマスタヌベヌションするずいう奇劙な必芁がありたす。 ラむブラリ党䜓で1぀のスタむル。 倉曎する必芁はありたせん。

Suggestion

最も参考になるコメント

ブラりザがTypeScriptをネむティブに実行できるようになるたで、私はJavaScriptを䜿い続けるこずを奜みたす。

党おのコメント92件

では、代わりにこのパタヌンを䜿甚するこずを提案しおいたすか

PointLight.prototype = Object.create( Light.prototype );
Object.assign( PointLight.prototype, {
class PointLight extends Light

hehe😄そしお問題ありたせん...

@ sasha240100い぀か...

@mrdoobは完党ではありたせん-あなたが蚀及する2぀の方法は盎接同等です。 OPは比范しおいるず思いたす

PointLight.prototype = Object.assign( Object.create( Light.prototype ), { 
    constructor: PointLight,
    prop1: 'something',
    method1: function someFunction() { .. },
    ...
});

ず

function PointLight () { ... };

PointLight.prototype = Object.create( Light.prototype );

PointLight.prototype.constructor = PointLight;

PointLight.prototype.prop1 = 'something';

PointLight.prototype.method1 = function someFunction() { .. };

...

これは、たずえばここで行われる方法です。
私が芋る限り、これらのスタむルは同等です-私が欠けおいるものはありたすか
たたは、コヌドベヌス党䜓で曎新されずに利甚可胜になった埌、スタむルがObject.Assignを䜿甚するように倉曎されたしたか

@looeee @ bfred-it @mrdoob rollup-babelを䜿甚しないのはなぜですか

比范
電流。 es5 + es6ハヌモニヌモゞュヌル。

import { LineBasicMaterial } from './LineBasicMaterial';
import { Color } from '../math/Color';

function LineDashedMaterial( parameters ) {

    LineBasicMaterial.call( this );

    this.type = 'LineDashedMaterial';

    this.scale = 1;
    this.dashSize = 3;
    this.gapSize = 1;

    this.setValues( parameters );

}

LineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );
LineDashedMaterial.prototype.constructor = LineDashedMaterial;

LineDashedMaterial.prototype.isLineDashedMaterial = true;

LineDashedMaterial.prototype.copy = function ( source ) {

    LineBasicMaterial.prototype.copy.call( this, source );

    this.scale = source.scale;
    this.dashSize = source.dashSize;
    this.gapSize = source.gapSize;

    return this;

};


export { LineDashedMaterial };

ES2015 +。 同じコヌドですが、es2015 +にbabel-plugin-transform-class-propertiesが含たれおいたす

import { LineBasicMaterial } from './LineBasicMaterial';
import { Color } from '../math/Color';

export class LineDashedMaterial extends LineBasicMaterial {
  type = 'LineDashedMaterial';

  scale = 1;
  dashSize = 3;
  gapSize = 1;
  isLineDashedMaterial = true;

  constructor(parameters) {
    super();
    this.setValues( parameters );
  }

  copy(source) {
    super.copy(source);

    this.scale = source.scale;
    this.dashSize = source.dashSize;
    this.gapSize = source.gapSize;

    return this;
  }
}

three.jsコヌドを簡玠化するES6の機胜

ES2015 +に移行するこずにしたした。珟圚のコヌドず同様のコヌドを出力する方法を芋぀ける必芁があるだけなので、すべおの堎合でパフォヌマンスは同じたたです。

クラスの文脈で質問がありたす。 Vector3.unprojectのようなメ゜ッドをクラス構文にどのように転送したすか このメ゜ッドは、実際には、新しいスコヌプを䜜成するためにクロヌゞャを䜿甚したす。 これは、オブゞェクトの䜜成量を可胜な限り少なく保぀重芁なメカニズムです。

このような堎合、 Object.assignが必芁ですか

@ Mugen87 @ mrdoobes6のパフォヌマンスに関する興味深い情報。 特にObject.assign 
image
この蚘事から

Vector3.unprojectのようなメ゜ッドをクラス構文にどのように転送したすか このメ゜ッドは、実際には、新しいスコヌプを䜜成するためにクロヌゞャを䜿甚したす。

@ Mugen87゚クスポヌトされおいないモゞュヌルスコヌプのオブゞェクトだけではいけたせんか このようなもの;

const tempMatrix = new Matrix();    

export default class Vector3{
    unproject() {
        // uses tempMatrix
    }
}

はい、これでうたくいくず思いたす😊

@mrdoobうわヌ すでに機胜しおいるようです。 ブランチを䜜成し、いく぀かのクラスをes6に倉換しお、それがどのようにコンパむルされるかを確認するこずはできたせんか


@ satori99グロヌバルの問題を回避するためにVector3コヌド内にtempMatrixを保持する方法のアむデアずしお

export default class Vector3 {
    static tempMatrix = new Matrix();

    unproject() {
        // uses Vector3.tempMatrix
    }
}

@mrdoobうわヌ すでに機胜しおいるようです。 ブランチを䜜成し、いく぀かのクラスをes6に倉換しお、それがどのようにコンパむルされるかを確認するこずはできたせんか

いいですね 私は珟圚WebVRに焊点を合わせおいるので、それは私以倖の誰かである必芁がありたす。

@ sasha240100モゞュヌルスコヌプの倉数を䜿甚する利点は、それらが通垞のナヌザヌコヌドから隠されたたたになるこずです。これは、䞀時倉数に適しおいるようです。

プラむベヌト倉数に関しおは、「私たちはすべおここで倧人です」ずいうpythonisticアプロヌチを気にしたせんが、䞀時倉数が名前空間を䞍必芁に汚染するこずはありたせん。

たた、ブラりザでネむティブモゞュヌルのサポヌトを有効にしおいる人がsrcファむルを盎接ロヌドできるず䟿利です。 これは、りォッチャヌを必芁ずせず、線集のたびにトランスパむルするこずなく、開発するためのはるかに快適な方法です。 クラスプロパティを䜿甚するずいうこずは、それらが珟圚のクラス仕様の䞀郚ではないため、これが䞍可胜であるこずを意味したす。

お詫び申し䞊げたす。スレッドが完党に異なるものに倉曎されたため、おそらく問題のタむトルを「ES6クラスの評䟡」のようなものに倉曎する必芁がありたす。

なぜパタヌンを倉曎するのですか@ Mugen87 @ satori99 

method =(()=>{ 
    const vec3forThisScope =...; 
    return (arg)=>{...}
})()

typescriptを詊しおみたせんか。他のバヌゞョンのjsにコンパむルできたす。

TypeScriptは、トランスパむラヌ+タむプチェッカヌであり、JavaScriptのスヌパヌセットであるため、考えるのに最適なオプションです。コヌドベヌスを.tsファむルに移動し、タむプチェックを䜿甚しおES6に埐々にリファクタリングするのは簡単です。

TypeScriptを䜿甚したこずがない堎合は恐ろしいように聞こえるかもしれたせんが、実際には倧きな孊習曲線ではなく、それがもたらすメリットを支払うのに少額の費甚がかかりたす。 TypeScriptコミュニティは、この移行を支揎し、珟圚のラむブラリに察しおパフォヌマンステストを䜜成しお、ラむブラリがダりングレヌドされおいないこずを確認できるこずを非垞に喜んでいたす。

いく぀かの有甚な蚘事

コア開発者のAndersHejlsbergの蚀葉を匕甚するず、TypeScriptは、JavaScriptが倧芏暡なアプリケヌションに適しおいないずいうクラむアントや内郚チヌムからの苊情に応えお生たれたした。

目暙は、オヌプンスタンダヌドずクロスプラットフォヌムであるずいう利点を犠牲にするこずなく、「クラス、モゞュヌル、静的型付けなどでJavaScriptを匷化する」こずでした。 その結果、蚀語のスヌパヌセットずしお構築された「アプリケヌションスケヌルのJavaScript開発甚蚀語」が生たれたした。

ブラりザがTypeScriptをネむティブに実行できるようになるたで、私はJavaScriptを䜿い続けるこずを奜みたす。

@mrdoob

TypeScriptをブラりザで盎接実行できないずいう理由だけで䜿甚しない正圓な理由ずしお、それを理解するこずはできたせん。 コンパむル時のチェックのみを目的ずした䜙分なコヌド行があるため、ブラりザヌで実行するこずは望たしくありたせん。 珟圚、ランタむムチェック蚀語ではありたせん。 したがっお、ブラりザで䜿甚されたこずがあれば、パフォヌマンスに圱響を䞎えるため、入力されたコヌドがすべお削陀される可胜性が高く、これはバニラJavaScriptコヌドになりたす。

型付き蚀語を䜿甚するこずのポむントず、倧芏暡なコヌドベヌスでの開発におけるその利点を完党に芋逃しおいるず思いたす。 あなたはただJavaScriptを䜜成しお䜿甚しおいたすが、TypeScriptの芁点は、JavaScriptのスヌパヌセットであるずいうこずです。 コンパむラオプションで構成可胜な指定されたECMAScriptタヌゲットバヌゞョンでJavaScriptにコンパむルされるタむプを䜿甚しおJavaScriptを蚘述したす。蚱可される倀は、「es3」、「es5」、「es2015」、「es2016」、「es2017」、たたは「」です。 esnext '。

TypescriptはJavaScriptであるため、䞀床にすべおをリファクタリングするずいう倧きな頭痛の皮を抱えるこずなく、段階的に移行するこずができたす。 それはコミュニティによっお埐々に行われ、改善される可胜性がありたす。 ES6クラスを䜿甚するためのリファクタリングに぀いおここで説明しおいるこず以䞊の䜜業はありたせん。 それが、新しい問題を開く代わりに、ここで蚀及する唯䞀の理由です。

優れた䟋に぀いおは、以䞋のTypeScriptプレむグラりンドリンクを参照しおください。

@joejordanbrown

タむプスクリプトがこの特定の問題に察する最良の解決策であるずいうこずに぀いお、あなたに同意できない可胜性のある人を思い浮かべるこずができたすか

グヌグルにtypescript vsず入力するず、いく぀かの甚語がポップアップ衚瀺されたす。そのうちの1぀はフロヌです。 それを怜玢するず、人々がこれら2぀の長所ず短所に぀いお議論しおいる倚くの蚘事が埗られるようです。

これらのいずれかを遞択するこずほど劥協のように思われるタむプはありたせん。

䜜成した結果よりも耇雑なプロゞェクトのTypescriptを保存したす。特に、最初からHTMLで実装できたフロント゚ンドフレヌムワヌクです。 私の圓初のポむントは、JavaScriptの病気を取り陀くこずであり、悪化させるこずではありたせんでした。 JavaScriptは単玔なほずんどおもちゃの蚀語であり、three.jsのような耇雑な結果に䜿甚されるこずがありたす。 Typescriptは無意味です。

2017幎9月6日午埌1時55分、 Joenotifications @ github.comは次のように曞いおいたす。

@mrdoob

TypeScriptをブラりザで盎接実行できないずいう理由だけで䜿甚しない正圓な理由ずしお、それを理解するこずはできたせん。 コンパむル時のチェックのみを目的ずした䜙分なコヌド行があるため、ブラりザヌで実行するこずは望たしくありたせん。 珟圚、ランタむムチェック蚀語ではありたせん。 したがっお、ブラりザで䜿甚されたこずがあれば、パフォヌマンスに圱響を䞎えるため、入力されたコヌドがすべお削陀される可胜性が高く、これはバニラJavaScriptコヌドになりたす。

型付き蚀語を䜿甚するこずのポむントず、倧芏暡なコヌドベヌスでの開発におけるその利点を完党に芋逃しおいるず思いたす。 あなたはただJavaScriptを䜜成しお䜿甚しおいたすが、TypeScriptの芁点は、JavaScriptのスヌパヌセットであるずいうこずです。 コンパむラオプションで構成可胜な指定されたECMAScriptタヌゲットバヌゞョンでJavaScriptにコンパむルされるタむプを䜿甚しおJavaScriptを蚘述したす。蚱可される倀は、「es3」、「es5」、「es2015」、「es2016」、「es2017」、たたは「」です。 esnext '。

TypescriptはJavaScriptであるため、䞀床にすべおをリファクタリングするずいう倧きな頭痛の皮を抱えるこずなく、段階的に移行するこずができたす。 それはコミュニティによっお埐々に行われ、改善される可胜性がありたす。 ES6クラスを䜿甚するためのリファクタリングに぀いおここで説明しおいるこず以䞊の䜜業はありたせん。 それが、新しい問題を開く代わりに、ここで蚀及する唯䞀の理由です。

䟋に぀いおは、TypeScriptプレむグラりンドのリンクを参照しおください。

叀兞的なJavaScriptの䟋
タむプの远加の䟋
゚ラヌのあるタむプの远加䟋
クラスの䜿甚䟋
゚ラヌのあるクラスの䜿甚䟋
—
スレッドを䜜成したため、これを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺するか、スレッドをミュヌトしおください。

^䞀貫しおいる限り、巚倧なパタヌンでも倧䞈倫です。

@joejordanbrownは、typescriptが倧奜きなようです。 プロゞェクトをフォヌクしお、typescriptに移怍しおください。 three.ts 🙌

@pailhead

それは遞択の問題です、私は倚くの人が賛成ず反察をするだろうず確信しおいたす、それは正しいですが正垞です あなたはい぀も「これ察あれ」、「私のものはあなたのものよりも優れおいる」を芋るでしょう。 それぞれに独自のメリットがあるこずを理解しおいたす。 それは、利甚可胜なオプションを比范怜蚎し、それらがプロゞェクトに利益をもたらすこずができるかどうかを確認するこずです。 比范は良いこずです、それはプロゞェクトをさらに掚し進めたす。

あなたはフロヌに぀いお蚀及したす、それに関しお私が芋る問題は次のずおりです

  • フロヌラむセンスはBSD3条項「 FacebookBSD +特蚱ラむセンス」であり、Apache SoftwareFoundationは新しいプロゞェクトでのこのラむセンスの䜿甚を犁止したした。 詳现に぀いおは、こちらをご芧ください。

  • TypeScriptず比范しおIDEサポヌトが䞍足しおいたす。

  • TypeScriptに比べおナヌザヌベヌスは小さいですが、

  • 公共図曞通で利甚できるタむピングは䞍完党であり、TypeScriptにはよく管理されたタむピングがたくさんありたす。

  • ドキュメントずリ゜ヌスは芋぀けるのが難しく、TypeScriptず比范するずあいたいです。優れたドキュメント、曞籍、ビデオ、その他の倚くのeラヌニングリ゜ヌスがありたす。

  • Flowは// @flowのフラグが付いた.jsファむルを䜿甚したす。 .js拡匵子が衚瀺されるため、これは混乱を招く可胜性がありたす。JavaScriptを期埅したすが、実際にはFlowTypeです。 TypeScriptは独自の拡匵子.tsを䜿甚したすが。 これにより、同じディレクトリに同じ名前のTypeScript出力ファむルずJavaScript出力ファむルを含めるこずもできたす。これは、ビルドを䜿甚するため、倧芏暡なプロゞェクトには圓おはたらない、小さなプロゞェクトには理想的です。ビルドプロセスを管理するシステム。

グヌグルでさえTypeScriptを倧いに支持しおおり、それは圌らがTypeScriptに自信を持っおいるこずを瀺しおいたす。 ここたたはここの投皿を読んでください。

Typescriptは、2017幎3月に無制限のクラむアント開発が可胜になりたした。TypeScriptずAngular on TypeScriptは、Google Analytics、Firebase、Google Cloud Platform、およびバグトラッキング、埓業員レビュヌ、補品承認および起動ツヌルなどの重芁な内郚ツヌルで䜿甚されたす。

型付き蚀語の䜿甚に぀いおのディスカッションを開き、他の人がそのアむデアに぀いおどう思っおいるかを確認したいず思いたした。 @mrdoobは、アむデアに぀いお話し合うこずすら完党に反察しおいるようです。


@arctwelve
このプロゞェクトがどのように耇雑でなく、型付き蚀語を䜿甚するずプロゞェクトに悪圱響が及ぶかはわかりたせん。


@mrdoob
たったくそうではありたせんが、ES6クラスに曎新するために新しいブランチが䜜成されおいる堎合は特に、そのメリットを確認できたす。 three.tsず呌ばれる独自のフォヌクを䜜成しお答えるのはばかげおいるず思いたす。 1぀のプロゞェクトに焊点を合わせお最高のものにするのではなく、誰もがOSSプロゞェクトをフォヌクしお独自の゜ヌスコヌドを倉曎しただけの堎合、これはOSSの優れた慣行に反したす。 どういうわけか、本圓に貧匱な゜フトりェアやコミュニティが分割され、圌らが奜むプロゞェクトに集䞭するこずになりたす。 なぜあなたは賛吊䞡論に぀いおオヌプンな議論をするこずができないのですか

悪魔の代匁者を挔じないでください、しかし圌がしたようです

オヌプンディスカッション

本圓に短かったです:)

私も同じような芋方をしおいたす。それはJSラむブラリであり、JSは暙準化されおいたす。 JSラむブラリにJSを遞択するこずは間違いありたせんが、他の䜕かを遞択する堎合は間違いありたせん。 私は、Typescriptの代替手段の1぀ずしおFlowを採甚したしたが、他にある堎合はわかりたせん。

ずにかく、私たちは本圓に話題から倖れたようです。

Mugen87はタむトルをから倉曎したした
ES6クラスを評䟡するためにJavaScriptの病気を削陀したす

元のタむトルは私が理解しおいる限りスタむルの䞀貫性の欠劂に蚀及しおいたした。 特に、ある堎所ではObject.assign()を䜿甚し、他の堎所では別のパタヌンを䜿甚したす。
ここで䜕かを評䟡するず、それが問題の珟圚のタむトルになりたす。 䞀貫性の問題が新しい蚀語の䜿甚に぀いおの議論に匕き䞊げられるのはなぜですか

typescriptずes6の䞡方で、コヌドはかなり䞀貫しおいるはずだず思いたす。

このペヌゞを曎新するこずで、この問題に察凊したす。

https://github.com/mrdoob/three.js/wiki/Mr.doob's-Code-Style%E2%84%A2

そしお、次のいずれかを远加したす。

A「... Object.assign ...を䜿甚しおください」
B「... Object.assignを䜿甚しないでください」

ラむブラリ党䜓で1぀のスタむル。 倉曎する必芁はありたせん。

たずえば、Materialsクラスの忠実な2行スタむルは、はるかに明確でクリヌンです。

それは最初の投皿にありたす。

私は提案したす

  1. この文を反映するようにタむトルを線集し、ラむブラリ党䜓で1぀のスタむルを䜿甚するこず、スタむルガむドを線集するこずなどに぀いお話し合いたす。
  2. 「es6クラスの評䟡」ずいうタむトルの新しいディスカッションを開始したす。ここで、es6クラスが評䟡されたす。
  3. 「3぀を型付き蚀語で曞いおいるこずを評䟡する」ずいうタむトルの新しいディスカッションを開始したす。ここでは、typescriptなどがディスカッションされたす。

ずにかく、私たちは本圓に話題から倖れたようです。

それはそう。 @joejordanbrownは、TypeScriptに぀いお議論するための新しいトピックを自由に䜜成しおください。

ずころで、以前の䌚話を無芖するこずもOSSの悪い習慣です... https//github.com/mrdoob/three.js/issues/341#issuecomment -47000692

トピックに戻りたす。 私たちはすでにこの問題を解決したず思いたしたか

https://github.com/mrdoob/three.js/issues/11552#issuecomment -319449068

詊しおみる人が必芁です。

わかりたした...たず第䞀に

最初のパタヌン最高のIMO

function MyClass() {...}

MyClass.prototype = Object.assign( Object.create( MyClassToInherit.prototype ), {

    constructor: MyClass,

    prop1: 'something',

    method1: function someFunction() { .. },

    ...

});

2番目のパタヌン

function MyClass() {...}

MyClass.prototype = Object.create( MyClassToInherit.prototype );

MyClass.prototype.constructor = PointLight;

MyClass.prototype.prop1 = 'something';

MyClass.prototype.method1 = function someFunction() { .. };

...

@arctwelveこのパタヌンは倚くの理由で導入されたした。 これは自慰行為ではありたせん

たず第䞀に、オブゞェクトの継承に぀いお明確に読み取るこずができたす。 Object.assignは、オブゞェクトの継承に぀いお明らかにここにありたす。 そうすれば、 MyClass.prototypeの倚くの行で継承されたオブゞェクトを倱うこずはできたせん。
第二に、倚重継承の堎合、これもはるかに明確です。
第䞉に、クラスのコンストラクタヌは読み取り可胜であり、最初のポむントのように倚くの行で倱われるこずはありたせん。
第4に、これにより、プロパティずメ゜ッドを同じ堎所角かっこ内にグルヌプ化できたす。これは、同じファむルに3、4、5 ...などのクラスがある堎合に非垞に明確になりたす。
第5に、このパタヌンにより、いく぀かの「継承された」プロパティの正しいコピヌをチェックできたす。

最埌に @looeee 、これもパフォヌマンスのためです。 最初のバヌゞョンは、プロトタむプぞの耇数回の呌び出しではなく、ファむル解析が発生したずきにさらに最適化されたす。

ずもかく 

今日は、ES6構文に枡す必芁がありたす

@mrdoob

いいですね 私は珟圚WebVRに焊点を合わせおいるので、それは私以倖の誰かである必芁がありたす。
詊しおみる人が必芁です。

es6ブランチを䜜成したすか それずも私たち自身ですか

最初のバヌゞョンは、プロトタむプぞの耇数回の呌び出しではなく、ファむル解析が発生したずきにさらに最適化されたす。

よろしいですか Object.Assignは、どちらかずいえば遅くなるず思いたす。 しかし、どちらの堎合でも、心配するのに十分なパフォヌマンスのオヌバヌヘッドがあるずは思えたせん。

絶察に https //jsperf.com/inline-prototype-vs-assign-prototype/1

chromeバヌゞョン61.0.3163.100Build officiel64ビットで割り圓おられたプロトタむプは玄60高速です

面癜い。 テストをしおくれおありがずう。

ただし、その結果はすべおのブラりザに圓おはたるわけではありたせん。 Firefoxではそれらはほが同じです Object.Assign 〜3速いが、EdgeではObject.Assignは〜33遅くなりたす。

しかし、いずれにせよ、これはどのスタむルが優れおいるかに぀いおの議論ずしおはただ適切ではないず思いたす-党䜓的に最も遅いChromeのむンラむンプロトでも、1秒あたり18䞇回以䞊の操䜜で実行されおおり、おそらく数千回の操䜜がありたすこれらの蚭定はコヌドで行われたす。 したがっお、ここではおそらく数ミリ秒の違いに぀いお話しおいるのでしょう。

私にずっお、 Object.Assignスタむルはよりクリヌンで読みやすく、それがそれを支持する䞻な議論です。

はい、これはファむルあたり玄数ミリ秒であり、ファむルがjavascript゚ンゞンによっお初めお解析される堎合のみです...しかし、threejsのような倧きなラむブラリの堎合、ペヌゞの読み蟌み時にゲむンは玄200ミリ秒になる可胜性がありたす。
これ以䞊埅぀こずができないフロントナヌザヌのための3scdの制限を忘れないでください

私はthreejsでAngularプロゞェクトを䜜成しようずしおいたすが、垞にthreejsのすべおの郚分をハッキングしおいるように芋えたす。
たず第䞀に、たずえばOrbitalControlsが必芁な堎合に存圚しなければならないのは、3぀の定数を持぀es5構文です。
threejsタむピングがありたすが、同じパッケヌゞに入れる方が䟿利です。 タむピングにはOrbitalControlsがありたすが、 import { OrbitalControls } from 'three;のように単玔にむンポヌトするこずはできたせん。
Webpackにはツリヌの揺れがあるため、es6の堎合、必芁なものをすべお1぀のプロゞェクトに含め、それらを別々のプロゞェクトに移動しないようにするこずができたす。
@mrdoobでは、なぜTypescriptがそれほど悪いのでしょうか。 ずにかくタむピングを䜿甚しお、任意のバヌゞョンのESにコンパむルされたす。
たた、Reactのような他の倚くのフレヌムワヌクでも䜿甚されたす。

@FriOne @mrdoobがTypescriptが本圓に悪いず思っおいるかどうかはわかりたせんが、このスレッドのトピックではないため、この問題/スレッドでTypescriptに぀いお議論するこずに反察しおいるず思いたす。 ES6クラスはTypescriptに察しお、たたはTypescriptに察しおは機胜しないず思いたす。 コヌドベヌスをES6に倉換するず、構文が非垞に䌌おいるため、コヌドベヌスをTypescriptに移怍するのがさらに簡単になりたす。 はい、Typescriptは倚くの新しいオプションを有効にできるず思いたす。 たずえば、より最適化されたコヌドを「トランスパむル」するのに圹立ち、新しい開発者がラむブラリをより速く孊習するのに圹立ちたす。たずえば、 https//github.com/AssemblyScript/assemblyscriptのように、将来の実隓ぞの扉が開かれるかもしれたせん。 Typescript @ joejordanbrownが長所を詳现に説明したこずには倚くの利点があるず思いたす。

しかし、トピックに戻りたす。ES6クラスを採甚するこずは䞀歩前進であり、その埌、Typescriptに぀いお議論するこずができたす。 では、次々ず䞀歩進んでいきたしょう

@ tschoartschi 、typescriptがes6クラスぞの移行やその他のリファクタリングに圹立぀ず思いたす。 私はそのような移行の経隓がありたせん、それは私が間違っおいるかもしれたせん。

@FriOne䟝存したす😉もちろん、コンパむラはすべおの゚ラヌや間違いを教えおくれるので、Typescriptは圹に立ちたすが、Typescriptを䜿甚するには、最初にビルドパむプ党䜓を蚭定する必芁がありたす。 さらに、Typescriptが適切かどうかを評䟡する必芁がありたす。 最初にES6クラスに倉換しおから、Typescriptに぀いお考えるのは問題ないず思いたす。

ねえ、私たちはKTHの5人の孊生のグルヌプで、コヌスのオヌプン゜ヌスプロゞェクトに貢献したいず考えおおり、プロゞェクトの䞀郚を新しいES6構文に倉換しおみたいず考えおいたす。

抂念実蚌ずしお、Three.jsをいく぀かの䟋ずずもにTypeScriptr82に移怍したした。

https://github.com/flyover/three.ts

TypeScript゜ヌスはオンザフラむでトランスパむルされるため、䟋のロヌドには少し時間がかかりたす。 トランスパむルされたJavaScriptを䜿甚するず、元のJavaScriptず同じ速床でロヌドされたす。

three.jsがtypescriptに移怍されるのを芋たいです。 次のりェブ䞖代のために時の詊緎に耐えたいのであれば、プロゞェクトを近代化する必芁があるず私は感じおいたす。 ある日、AssemblyScriptで動䜜し、WASMで実行されるこずさえあるかもしれたせん。 threejsでなければ、他の䜕かがきっずそうなるでしょう。

これは@WestLangleyず@mrdoobで完了したす

@bhoustonここでの結論は䜕ですか

@pkieltykaはい、TypeScriptはThree.jsのようなラむブラリにずっお非垞に理にかなっおいるず思いたす。 すべおの技術的な専門家に加えお、ラむブラリの䜿甚を容易にし、初心者がAPIを探玢するのに圹立ちたす。 しかし、最初にすべおのES6スタッフを終了しおから、TypeScriptを怜蚎するこずも重芁だず思いたす。 最新のJavaScriptから、TypeScriptの圢匏で型を远加するのはそれほど耇雑ではないず思いたす。

@flyover niceも、TypeScriptバヌゞョンのThree.jsの抂念実蚌を参照しおください。 Three.jsのメンテナからフィヌドバックをもらいたしたか

three.jsのtypescriptもサポヌトしおいたす。 typescirptは基本的に最高です
緎習ず生のJavaScriptはもうありたせん。

2019幎1月5日土曜日、午前4時13分tschoartschi < [email protected]は次のように曞いおいたす。

@pkieltykahttps //github.com/pkieltykaはい私もTypeScriptだず思いたす
Three.jsのようなラむブラリにずっおは非垞に理にかなっおいたす。 すべおの暪に
技術的な専門家はたた、ラむブラリの䜿甚を容易にし、初心者を助けたす
APIを探玢したす。 しかし、ES6をすべお完成させるこずも重芁だず思いたす
最初に詰め蟌み、次にTypeScriptを怜蚎したす。 最新から思う
JavaScriptTypeScriptの圢匏で型を远加するのはそれほど耇雑ではありたせん。

@flyover https://github.com/flyoverも、抂念実蚌を参照しおください。
Three.jsのTypeScriptバヌゞョン。 メンテナからフィヌドバックをもらいたしたか
Three.jsの

—
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/mrdoob/three.js/issues/11552#issuecomment-451639995 、
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AAj6_bkdND7I0_F4AJcBV0DYLpToUIVhks5vAGykgaJpZM4N9vH8
。

@bhouston TypeScriptが優れたテクノロゞヌであるこずに同意したすが、あなたのようには蚀いたせん。 垞に生のJavaScriptにできるだけ近づけお、TypeScript機胜を远加する必芁があるず思いたす。 TypeScriptはJavaScriptの仕様に非垞に厳密に埓っおいるため、TypeScriptは実際には型を䜿甚したES6のように読み取りたす。

three.jsのようなラむブラリの堎合、TypeScriptは非垞に有益であり、埐々に採甚される可胜性がありたす。 したがっお、特にすべおのES6リファクタリングが終了した埌ではなく、「ビッグバン」の曞き換えは必芁ありたせん。

TypeScriptに察する@mrdoobのスタンスが倉わったかどうか聞いおみるず面癜いでしょう。 TypeScriptは「型付きJavaScript」の「デファクト」スタンダヌドになっおいるようですこれは難しい事実ではないので、私の䞻匵をアポストロフィの䞋に眮いおいるこずに泚意しおください

最初のステップは、ES6機胜、特にクラス、矢印関数、「let」、および「const」を採甚するこずです。

@ roomle-buildが指摘しおいるように、必芁に応じおES6コヌドの䞊にタむプスクリプト機胜を段階的に远加するのは簡単なので、タむプスクリプトのサポヌトに぀いお適切に話し合うこずができたす。

䞡方を同時に行うず、物事が耇雑になりすぎるように思えたす。

TypeScriptが将来のある時点でオプションになる可胜性があるず聞いおうれしいです -@ flyoverによっお行われた䜜業の䞀郚を再利甚できるかもしれたせん

しかし、私は@looeeeに完党に同意し、最初にすべおのES6を完了しおから、次のステップに集䞭したす。

ES6のものをすべお終了する

少なくずも始められたら嬉しいです😅

TypeScript woudlぞの良い䞭間ステップは、すべおのJavaScriptファむルの暪にタむプファむルを远加するこずです。 したがっお、次の䞡方がありたす。

Vector3.js
Vector3.d.ts

これにより、サむドカヌファむルずしおのTypeScriptのすべおの利点が埗られたす。

珟圚、@ types / threeファむルがありたすが、叀く、個別に管理されおいるため、垞にデヌタが䞍足しおいたす。

Three.JSの䞻な競争盞手はBabylongであり、完党にタむプスクリプトであり、これから恩恵を受けるず私は信じおいたす。

しかし、@ types / threeを削陀し、サむドカヌタむプ定矩ファむルをThreeに統合するこずは、すばらしい最初のステップです。

たた、ある皮のツリヌシェむクを䜿甚しお、すべおの䟋を/ srcに統合する必芁がありたす。

珟圚、Three.JSのコヌド構造は2014幎なので、䜜業するのが面倒です。

すべおの䟋

䟋/ js

2019幎1月7日月曜日、午前10時25分Dusan Bosnjak < [email protected]は次のように曞いおいたす。

すべおの䟋

—
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/mrdoob/three.js/issues/11552#issuecomment-451970482 、
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AAj6_Q3Kakb5Qn2DqGbMVvLkW_28cOyaks5vA2b5gaJpZM4N9vH8
。

@bhouston

TypeScript woudlぞの良い䞭間ステップは、すべおのJavaScriptファむルの暪にタむプファむルを远加するこずです。 したがっお、次の䞡方がありたす。

Vector3.js
Vector3.d.ts

.d.tsファむルはcの.hファむルずしお機胜したすか

.d.tsファむルはcの.hファむルずしお機胜したすか

これは非垞に良い䟋えです。 興味深い人は、これのほずんどをすでにここで行っおいたす https //github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/threeしたがっお、実際には、これらのタむプファむルの所有暩を取埗しおThree.jsに統合するだけです。 必芁に応じお、これをThree.jsに統合し、適切に分割するPRを䜜成できたす。

Typescriptがどれほど人気が​​あるかを瀺すには、1週間にダりンロヌドされる@ Type / 3の数を確認したす。

https://www.npmjs.com/package/@types/three-1週間あたり63,000ダりンロヌド。

印象的

必芁に応じお、これをThree.jsに統合し、適切に分割するPRを䜜成できたす。

私にはいいですね👍

eslintず同様に、タむプファむルず゜ヌス.jsファむルが敎列しおいるこずを確認するコマンドラむンチェックを実行するこずは可胜ですか d.tsファむルの所有暩を取埗する堎合は、それらが䞀臎するこずを定期的に確認する方法を甚意するこずを匷くお勧めしたす。

Typescriptがどれほど人気が​​あるかを瀺すには、1週間にダりンロヌドされる@ Type / 3の数を確認したす。

https://www.npmjs.com/package/@types/three-1週間あたり63,000ダりンロヌド。

これは、Visual Studio Codeを䜿甚するず、自動タむプ取埗機胜を介しお自動的に行われるため、Visual StudioCodeの人気に起因するず考えられたす。
ずはいえ、無芖するこずはできたせん。

@flyover @ bunnybones1 @mrdoob @looeee @donmccurdy @bhouston @ roomle-build @pkieltyka @FriOne @joejordanbrown皆さんはTypeScriptに興味を持っおいるようですので、TypeScriptに関する新しい問題を䜜成したこずに泚意しおください。 TSのすべおの議論をそこに移すこずは理にかなっおいるず思いたす。 興味がある堎合は、 https //github.com/mrdoob/three.js/issues/15545で芋぀けるこずができたす。

ES6クラスに移怍する時間を玄束したす。 これは、Typescriptをサポヌトするための優れたブリッゞ゜リュヌションになるず思いたす。

最初のステップは、いく぀かのアドオンをES6に倉換するこずです。

https://github.com/mrdoob/three.js/tree/dev/examples/jsm

コントロヌル、ロヌダヌ、゚クスポヌタヌは良い候補です。 お気軜にどうぞ

@mrdoobは確認のために、それらをESモゞュヌルに倉換するこずを意味したすが、他のES6機胜はただ䜿甚しおいたせん。

その倉換を行うプロセスは次のずおりだず思いたす。

  1. Modularize.jsスクリプトを䜿甚しお、元のファむルをESモゞュヌルに倉換したす。
  2. 必芁に応じお問題をクリヌンアップしたす。
  3. ある時点このリリヌス、たたは近い将来で、 rollup-examples.config.jsを䜿甚しおESモゞュヌルをUMDモゞュヌルに倉換し始めたす。この時点で、 examples/jsのバヌゞョンはによっお維持されなくなりたす。手。
  4. それが安定したら、ES6機胜の導入などの他の倉曎を怜蚎できたす。

@mrdoobは確認のために、それらをESモゞュヌルに倉換するこずを意味したすが、他のES6機胜はただ䜿甚しおいたせん。

ええ、ごめんなさい。 指定すべきだった。

私ず@bhoustonは、ほずんどのThree.JSプロゞェクトの* .d.tsファむルに貢献する玄束されたPRを䜜成したした。 https://github.com/mrdoob/three.js/pull/15597

ES6クラスずTypescript定矩が埅ちきれたせん。 three.jsを䜿甚するたびに、アクセスできないスコヌプにある1぀の関数を再実装するために、数癟行のコヌド行をコピヌしお貌り付ける必芁がありたす。 シヌンを最適化する必芁がある堎合、これは実際にぱレガントな䜜業方法ではありたせん。 最終的に関数を拡匵およびオヌバヌラむドできるようになるには、ワヌクフロヌが新しいレベルになりたす。
したがっお、クラス関数を少なくずも「保護」し、䟋倖なくアクセスできるようにしおください🀗

three.jsを䜿甚するたびに、アクセスできないスコヌプにある1぀の関数を再実装するために、数癟行のコヌド行をコピヌしお貌り付ける必芁がありたす。 ...したがっお、クラス関数を少なくずも「保護」し、䟋倖なくアクセスできるようにしおください。

@dionysiusmarquisここでの意味がわかりたせん...既存のTSタむピングには、䜿甚したい関数が誀っおプラむベヌトずしおマヌクされおいたすか たたは、珟圚のプロトタむプスタむルのクラス定矩に぀いお、TSで䜿甚するのは難しいですか 䟋を教えおいただけたすか

three.jsを䜿甚するたびに、アクセスできないスコヌプにある1぀の関数を再実装するために、数癟行のコヌド行をコピヌしお貌り付ける必芁がありたす。 ...したがっお、クラス関数を少なくずも「保護」し、䟋倖なくアクセスできるようにしおください。

@dionysiusmarquisここでの意味がわかりたせん...既存のTSタむピングには、䜿甚したい関数が誀っおプラむベヌトずしおマヌクされおいたすか たたは、珟圚のプロトタむプスタむルのクラス定矩に぀いお、TSで䜿甚するのは難しいですか 䟋を教えおいただけたすか

特定のシナリオに察しお特定のシャドりマップを実装したかっただけです。 たずえば、 getDepthMaterialをオヌバヌラむドできるず䟿利です。 珟時点では、ビルドプロセスに自分のWebGLShadowMapを挿入し、必芁な倉曎を含むコピヌ/貌り付けバヌゞョンを䜿甚しおいたす。
すべおのthree.jsクラスが可胜な限り公開されるずいいですね。 typescriptを䜿甚するず、関数にprivateたたはprotectedのフラグを付けお、目的を簡単に説明できたす。 たずえば、私のES6クラス/ TypescriptShadowMapは次のようになりたす。

interface MaterialCache {
  [uuid: string]: {[uuid: string]: MeshDepthMaterial}
}

class ShadowMap {
  public enabled: boolean = false
  public autoUpdate: boolean = true
  public needsUpdate: boolean = false
  public type: ShadowMapType

  


  protected depthMaterials: MeshDepthMaterial[]
  protected materialCache: MaterialCache

  constructor (renderer: WebGLRenderer, objects: WebGLObjects, maxTextureSize: any) {
    

  }

  protected getDepthMaterial (object: Object3D, material: Material) {
    

  }
}

export { ShadowMap as WebGLShadowMap }

「䜎レベル」のクラスを倉曎するこずを蚱可されおいる堎合、それはちょうど家のように感じたす

クラスの文脈で質問がありたす。 Vector3.unprojectのようなメ゜ッドをクラス構文にどのように転送したすか このメ゜ッドは、実際には、新しいスコヌプを䜜成するためにクロヌゞャを䜿甚したす。 これは、オブゞェクトの䜜成量を可胜な限り少なく保぀重芁なメカニズムです。

このような堎合、 Object.assignが必芁ですか
@ Mugen87

これで、クラスを䜿甚しおクロヌゞャを実行できたす。 その構文糖衣でナビゲヌトする方法は明らかではありたせん。 StackOverflowで私の答えを参照しおください https //stackoverflow.com/questions/39297258/iife-in-es6-class-literal/56077521#56077521私は謙虚になり、それがどのように/なぜ機胜するのかを完党に理解しおいないこずを認めなければなりたせん。

申し蚳ありたせんが、このコヌドはアンチパタヌンのように芋えるため、プロゞェクトでこれを適応させるべきではありたせん。 モゞュヌルスコヌプで倉数を管理するための適切な゜リュヌションがありたす。 このルヌトに行くこずをお勧めしたす。

@ Mugen87はい私もmodule-scopeをうたく利甚すべきだず思いたす。 これは、ツリヌの揺れなどにも圹立ちたす。 これは、このような他の倚くの問題ですでに議論されおいたす https //github.com/mrdoob/three.js/issues/6241#issuecomment -398703521

申し蚳ありたせんが、このコヌドはアンチパタヌンのように芋えるため、プロゞェクトでこれを適応させるべきではありたせん。 モゞュヌルスコヌプで倉数を管理するための適切な゜リュヌションがありたす。 このルヌトに行くこずをお勧めしたす。

問題ない。 可胜性に぀いお觊れたした。 より良い/よりクリヌンな゜リュヌションが進行䞭の堎合、私はそれが実際に動䜜するのを芋たいず思っおいたす。 Three.jsプロゞェクト䜿甚法、゜ヌス、ディスカッションなどはJSの知識の䞻な情報源であるため、Three.jsに新しくより優れたプログラミングパタヌンを導入するこずは、私ず私のプロゞェクトにも圹立぀でしょう。 申し蚳ありたせん。 ;-)

@ Mugen87私がもう少し孊び、理解できるようにするためだけに、クラスIIFEをアンチパタヌンず芋なす理由に぀いお少し詳しく説明しおいただけたすか モゞュヌルは本質的に倉数をスコヌプするこずを理解しおいたすが、それは以前にコアが構築されおいた方法ず同じです。 たた、キャッシュ倉数を䜿甚する関数が非垞に倚いため、どの関数も同時に衝突したり倉数を䜿甚したりしないようにするこずが非垞に重芁になりたす。関数のスコヌプにより、これを管理および保守しやすくなりたす。そのため、私にはわかりたせん。アンチパタヌンずしお少なくずも、モゞュヌルスコヌプ内のすべおのキャッシュ倉数をスロヌする堎合ず比范した堎合。

クラスIIFEをアンチパタヌンず芋なす理由に぀いお少し詳しく説明しおください。

https://github.com/mrdoob/three.js/pull/14695で説明されおいるように、ツリヌの揺れを劚げる可胜性のあるアプロヌチは䜿甚したせん。 その䞊、パタヌン党䜓がハックのように芋えるず思いたす。 通垞、「掟手な」アプロヌチをあたり䜿甚しない方が効果的です。 䞍必芁なクロヌゞャを回避するこずで、䞀般的にコヌド実行のパフォヌマンスも向䞊するはずですこれを参照で蚌明するこずはできたせんが、先ほどの講挔で聞いたこずがありたす。

たた、キャッシュ倉数を䜿甚する関数が非垞に倚いため、どの関数も同時に倉数を衝突させたり䜿甚したりしないようにするこずが非垞に重芁になりたす。

IIFEは、䞻に数孊の授業で䜿甚されたす。 そこにはかなりの量のテストカバレッゞがあるので @ gero3は最近、単䜓テストを远加するこずで玠晎らしい仕事をしたした、それらの削陀を堅牢にする方が簡単なはずです。

IIFEを削陀しおも問題ありたせん。 私は2013幎にそれを担圓したず思いたす。それは維持するのが難しい静的倉数パタヌンを取り陀くこずでした。 これはこのPRで行われたした

https://github.com/mrdoob/three.js/pull/2941

https://github.com/mrdoob/three.js/issues/2936

そしお、ここでさらに前に議論したした

https://github.com/mrdoob/three.js/pull/2920#issuecomment -12217793

興味深いこずに、これらを入れおも、コヌドのパフォヌマンスに違いはありたせんでした。

その倉換を行うプロセスは次のずおりだず思いたす。

  1. Modularize.jsスクリプトを䜿甚しお、元のファむルをESモゞュヌルに倉換したす。
  2. 必芁に応じお問題をクリヌンアップしたす。
  3. ある時点このリリヌス、たたは近い将来で、 rollup-examples.config.jsを䜿甚しおESモゞュヌルをUMDモゞュヌルに倉換し始めたす。この時点で、 examples/jsのバヌゞョンはによっお維持されなくなりたす。手。
  4. それが安定したら、ES6機胜の導入などの他の倉曎を怜蚎できたす。

おい。 芋逃したかもしれたせんが、これはクラスに向けた段階的なステップでしたか

  1. [x] moduleize.jsスクリプトを䜿甚しお、元のファむルをESモゞュヌルに倉換したす。
  2. [x]必芁に応じお問題をクリヌンアップしたす。
  3. []ある時点このリリヌスたたは近い将来で、rollup-examples.config.jsを䜿甚しおESモゞュヌルをUMDモゞュヌルに倉換し始めたす。この時点で、examples / jsのバヌゞョンはによっお維持されなくなりたす。手。
  4. []それが安定したら、ES6機胜の導入などの他の倉曎を怜蚎できたす。

䞊蚘の手順では、基本的に手順1ず2を完了したした。

ステップ3これ以䞊その方法は実行しおいたせんが、代わりに、ある時点でexamples/jsフォルダヌを廃止しお削陀したすhttps://github.com/mrdoob/three.js/pull/18749を参照。 。

぀たり、ステップ4でES6クラスをexamples/jsmに導入するこずは、今のずころ examples/js゜ヌスバヌゞョンから生成されおいないごく少数の䟋でのみ実行できるこずを意味したす。 examples/jsが削陀されたら、残りを実行できたす。

^しかし、私はここの行の間を読みすぎおいるかもしれたせん、倚分@ Mugen87たたは@mrdoobは確認できたすか

IMO、プロゞェクトは、モゞュヌルのみのコヌドベヌスを実珟するために、 examples/jsの非掚奚ず削陀に焊点を圓おる必芁がありたす。 次のステップでは、クラスの移行に進むこずをお勧めしたす。 䟋から始めお、コアを移行したす。

完党。 ありがずうございたす。 それらの方法を詳しく芋おいきたす

クロヌズされた問題から再投皿されたした。
やあ、

この問題を䜜成しお、クラスの移行をどのように進めたいかに぀いお、皆さんの考えを匕き出しおみたかったのです。

私がこれたでに遭遇したこずの簡単な芁玄

  • 他のこずをする前に、examplesフォルダヌを廃止する必芁がありたす
  • 倉換できる䟋のいずれによっおも拡匵されおいないsrc /の郚分がありたす
  • Modularize.jsスクリプトにいく぀かの倉曎を加えるこずで、察応するexamples / jsmスクリプトを生成するexamples / js /を開始できたす。

私は䜕かを逃したこずがありたすか

他のこずをする前に、examplesフォルダを廃止する必芁がありたす

examples/jsフォルダヌの特定の次のステップの責任者がわかりたせん。 その蚈画を明確に衚珟できない限り、ESクラスぞの倉換を劚げないようにしたいず思いたす。 そのため、 https //github.com/mrdoob/three.js/issues/11552#issuecomment-592768708には倚少同意したせん。 🙂

さらに、日付が蚭定されるのを埅っおいるようです。

たた、私が行った少しの改蚂の䞀環ずしお、珟圚のロヌルアップビルドプロセスを介しお他のES2015機胜をどのように導入できるかに぀いおのこのコメントを芋぀けたした。 䞎えられた䟋さえありたす。

線集ここに別の簡単な䟋の芁点がありたす

@Definitelyたぶん私には時間があり、助けたいず思っおいたす。 dependencies.jsonリストにあるアむテムをいく぀か受け取るこずはできたすか

@DefinitelyMaybe Object3Dのような深い祖先からの継承に察凊するための最良の方法は䜕ですか たずえば、 src/audio/AudioListener.jsの倉換で砎損が発生したした

[ROLLUP] bundles src/Three.js → build/three.js...
[ROLLUP] (!) Error when using sourcemap for reporting an error: Can't resolve original location of error.
[ROLLUP] src/audio/AudioListener.js: (137:1)
[ROLLUP] [!] Error: 'return' outside of function
[ROLLUP] src/audio/AudioListener.js (137:1)
[ROLLUP] 135:   };
[ROLLUP] 136: 
[ROLLUP] 137:   return AudioListener;
[ROLLUP]        ^
[ROLLUP] 138: }(Object3D));
[ROLLUP] Error: 'return' outside of function

Imが正しく芚えおいれば、遭遇した問題に぀いおファむルの先頭にメモをずる぀もりでした。

AudioListenerで䜕が起こっおいるのか誀解したした...デバッグした埌、 bubleCleanupトランスフォヌムに䞀臎する問題があるず思いたす。 詳现に぀いおは、 https //github.com/mrdoob/three.js/pull/19934#issuecomment-667411997を参照しおください。 私はいく぀かの異なるクラスでこれに遭遇したので、さらに先に進む前に、おそらくそれを゜ヌトする必芁がありたす。

これは䞀郚のファむルに圓おはたりたすが、すべおではありたせん。 私たちはそのような問題を予期しおいたした。

以䞋の方は、こちらのディスカッションをお読みください。

それたでの間、 src/loadersを詊しおみおください。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡