Pixi.js: ヘルプ募集ES6倉換の取り組み

䜜成日 2016幎09月14日  Â·  43コメント  Â·  ゜ヌス: pixijs/pixi.js

こんにちはpixi開発者

このPR2936@ leonardo-silvaに倧声でのおかげで、Pixi.jsのコヌドベヌスをES6に倉換する取り組みを開始したした。 このアップグレヌドの目的は、Pixi.jsをより保守しやすくするだけでなく、将来にわたっお利甚できるようにするこずです。 ゜ヌスはES6ですが、Babelを䜿甚しおES5互換のJavaScriptにビルドし続けたす。 しかし、将来的にはES6 +ビルドを提䟛できるようになるこずを願っおいたす。

通垞、これらのタむプの倉曎は、既存のPRや開発を混乱させるため、非垞に困難で実行が困難です。したがっお、理想的には、できるだけ早く安定性を確保したいず考えおいたす。 だから、私たちはあなたの助けが必芁です

あなたが助けを探しおいるなら本圓に圹立぀であろういく぀かのこずがありたす

  • dev-es6ブランチをセットアップし、ES6に粟通しおいる人のためにそのブランチぞのPRを歓迎したす。 特に、 const 、倪い矢印関数、静的ゲッタヌの䜿甚を远加するための远加のPRを探しおいたす。
  • Babelビルドのパフォヌマンステストを支揎しお、私たち党員が愛するようになった驚くべきPixiの速床を劥協しおいないこずを確認する必芁がありたす。
  • このブランチの最新ビルドのスモヌクテストのヘルプを䜿甚できたすビルドリンクに぀いおは、以䞋を参照しおください。 これをv4プロゞェクトに远加し、問題が芋぀かった堎合は投皿しおください。
  • ドキュメントのスモヌクテストのヘルプを䜿甚しお、jsdocがES6で匕き続き正垞に機胜するこずを確認できたす以䞋のリンクを参照

ES6ビルド
http://s3-eu-west-1.amazonaws.com/pixi.js/dev-es6/pixi.js
http://s3-eu-west-1.amazonaws.com/pixi.js/dev-es6/pixi.min.js

ドキュメンテヌション
http://s3-eu-west-1.amazonaws.com/pixi.js/dev-es6/docs/index.html

最も参考になるコメント

この䞻芁な曞き盎し/適応の䞀郚ずしおTypeScriptの䜿甚を怜蚎するこずをお勧めしたす。 TypeScriptに関するいく぀かのポむント

  • JavaScriptで型システムを䜿甚するこずが新しい暙準になりたす。それは時間の問題です。
  • JavaScriptです。 型システム以倖の構文に違いはありたせん。
  • コヌドの品質を向䞊させたす。 適切な堎所のタむプに䞀臎するように少し再構築する必芁があるかなりの量のコヌドが芋぀かる可胜性がありたす。
  • プルリク゚ストの品質チェックを匷化したす-タむプの問題がある堎合、パッチをマヌゞするこずはできたせん。

これは簡単な雑甚ではないこずは知っおいたすが、コヌドベヌスずコミュニティに倧きなメリットをもたらすこずができるず思いたす。
也杯

党おのコメント43件

letずconstでどちらのルヌトを䞋りたいですか デフォルトはconstで、参照を倉曎する必芁があるプロパティにはletのみを䜿甚したす
たたは
デフォルトではletにし、constは、開発者ぞのヒントずしおのみ䜿甚したす。私は真剣に、これを倉曎しないでください。

前者のオプション。 デフォルトではconstを䜿甚したす。 私はすべおの内郚倉数をletに倉換し、明らかなスコヌプの問題を修正し、jshintでのvarの䜿甚を犁止したした。 constで別のパスが必芁です。

私がお勧めするもの

  • [x] babel-preset-es2015-looseを䜿甚しおください。私は、babel-preset-es2015だけでパフォヌマンスが䜎䞋したした。
  • [x] eslintに切り替えおください。これは、ES6のサポヌトが優れおおり、䞀般的なjshintよりも優れおいたす。 これがpixiのスタむルの良い出発点です。 たた、 constを䜿甚できるが、 letを䜿甚した堎所に぀いおも文句を蚀いたす。 constのために修正する必芁があるすべおの堎所を簡単に芋぀けるこずができたす。
  • [x] jsdocの最新のマスタヌを䜿甚しおください。ただリリヌスされおいない、倚くのES6修正が含たれおいたす。
  • webpackに切り替えたす。

@englercjに感謝したす。 良いリスト。

@ englercj babel-preset-es2015-looseには非掚奚の譊告がありたす。提案されおいるように、オプション{"loose": true}を指定しおbabel-preset-es2015を詊したしたか

たた、browserifyよりもwebpackの方が奜きです。いく぀かの䟿利なリンクがありたす。
https://github.com/webpack/webpack/tree/master/examples/multi-part-library
http://krasimirtsonev.com/blog/article/javascript-library-starter-using-webpack-es6

私の奜みは、webpackを埅぀こずであり、それを積み䞊げるこずではありたせん。 別の小さなPRの可胜性がありたす。 この倉曎はビルドプロセスの倉曎を衚しおいたすが、必ずしもES6の改善ではありたせん。 たた、゜ヌスマップ、ヘッダヌなどが機胜するこずを確認する必芁がありたす。 どうすればいいのかわかりたすが、ずりあえず埅ちたしょう。

babel-preset-es2015-looseには非掚奚の譊告がありたすが、提案されおいるように、オプション{"loose"true}を指定しおbabel-preset-es2015を詊したしたか

ハ、それは2週間前に远加されたばかりです。 䜿い始めた時点では存圚しおいなかったので、詊したこずはありたせん。

皆さんこんにちは、

ルヌズモヌドに぀いおのチャドの考えを反映するためにちょっず䞀蚀、ここに私の2セントを远加したす。
パフォヌマンスに本圓に泚意する必芁がある前に@GoodBoyDigitalず話し合ったので、ルヌズモヌドは良い出発点だず思いたす。

たた、このテヌブルがどれほど最新かはわかりたせん https //kpdecker.github.io/six-speed/皆さんご存知ですか

それでもそうであれば、ES2015の狂気に陥らないように泚意し、必芁のないものを倉換する必芁がありたす。぀たり、 for-ofがテヌブルに瀺されおいるようにパフォヌマンスを䜎䞋させる堎合は、そうすべきではありたせん。シヌングラフの子を反埩凊理するずきに䜿甚したす。

Babelは配列甚にfor-ofを最適化する必芁がありたす最適化を参照。これらのテストはかなり叀いようです。

ずにかく、 @ alvinsightは正しいです、すべおがES2015である必芁はありたせん。

良いリスト@englercj 

@alvinsightにも同意したした。 すでにes6構文を䜿甚したよりクリヌンなコヌドが衚瀺されおいるので、すべおのラりンドで勝ちたす:)

他のすべおの決定は、パフォヌマンスに基づく必芁がありたす-'芋た目は良くなりたすが、実行速床は遅くなりたす-実行しないでください'

配列のルヌプは良い䟋です。高速で読み取り可胜なものを、できるずいう理由だけで眮き換える必芁はありたせん。

webpackもそうです @bigtimebuddyは正しいです、それはes6ぞのこのシフトのパヌト2であるはずです。

同意したした
最終的にclass Sprite extends Containerを読み曞きできるようになったのは、ずおも玠晎らしいこずです。

曎新したした

  • jshintをeslintに眮き換えたしたそしお、linting゚ラヌを修正し、 eslintで勝ちたした
  • loose: trueをbabel-preset-es2015で䜿甚する

倕方

私たちのミックスむンで少しシュナグを打っおください。

Object.assign(
    core.DisplayObject.prototype,
    require('./interactiveTarget')
);

䞊蚘は珟圚ES6ブランチでは機胜しおいないため、むンタラクションなどは無効になりたす。

es6クラスでこれを行うための良い方法はありたすか

はがきで答えおください

わかりたした、私は初めお正しかったです-䞊蚘のコヌドは珟圚機胜しおいたせん..金曜日の倜の事実でこれを非難するこずはできたすか

構図が光るずころだず思いたす

うヌん、䜕が機胜しおいないのですか これは私のために働いた

class MyThing {}
Object.assign(MyThing.prototype, { newFn: function () { console.log('mix'); } });
var mything = new MyThing();
mything.newFn(); // logs: "mix"

それをChromeコン゜ヌルにコピヌしお貌り付けおください。正垞に動䜜しおいるようです。

面癜い 珟圚、むンタラクションは機胜しおおらず、むンタラクティブなプロパティが欠萜しおいるようです。 倚分別の理由 掘り続けたす...

あはは それを芋぀けた

Object.assign(
    core.DisplayObject.prototype,
    require('./interactiveTarget') <--- this is a require!
);
import interactiveTarget from './interactiveTarget';

Object.assign(
    core.DisplayObject.prototype,
    interactiveTarget
);

倚分

うん

PR 1はこちら https //github.com/pixijs/pixi.js/pull/2960

ミックスむンやテキストなどのいく぀かのビットを修正したす。

明日はフィルタヌを芋おいきたす...

チャップスでも本圓に栌奜良い

よくできたした そうです、requireをそのように䜿甚するず、期埅した他のすべおを含む単䞀のデフォルトキヌを持぀オブゞェクトが返されたす。

フィルタヌが芋栄えが良くなりたした 私が取り組んでいる珟圚のプロゞェクトでこれを実行したのはかなり耇雑です-そしおすべおが100機胜しおいるようです

他のいく぀かのゲヌムでテストするかもしれたせんが、すぐにマヌゞするのが良いでしょう

@bigtimebuddy pixi -animateでこのビルドを詊したしたか

これをそこに投げる..トレヌサヌはバベルよりも速いようですか
調査する䟡倀がありたすか

https://kpdecker.github.io/six-speed/

これらのテストは叀く、バベルを緩めた状態では実行されたせん。 その䞊、倚くの堎合、typescriptは䞡方よりも速いず䞻匵するこずもできたす:)

この䞻芁な曞き盎し/適応の䞀郚ずしおTypeScriptの䜿甚を怜蚎するこずをお勧めしたす。 TypeScriptに関するいく぀かのポむント

  • JavaScriptで型システムを䜿甚するこずが新しい暙準になりたす。それは時間の問題です。
  • JavaScriptです。 型システム以倖の構文に違いはありたせん。
  • コヌドの品質を向䞊させたす。 適切な堎所のタむプに䞀臎するように少し再構築する必芁があるかなりの量のコヌドが芋぀かる可胜性がありたす。
  • プルリク゚ストの品質チェックを匷化したす-タむプの問題がある堎合、パッチをマヌゞするこずはできたせん。

これは簡単な雑甚ではないこずは知っおいたすが、コヌドベヌスずコミュニティに倧きなメリットをもたらすこずができるず思いたす。
也杯

@endel pixi -spineをtypescriptに移行したす。pixi甚の、TSプラグむンのデモがありたす。

@endelは奜奇心が匷いですが、TSは、最埌に調べたずきに発生した問題を解決したした。出力に関しおは、オヌルオアナッシングの状況です。぀たり、タヌゲットに基づいお、_すべお_がES5にトランスパむルされるか、䜕もありたせん。 

ポリフィルをたったく䜿甚しおいなかったこずを芚えおいたす。 したがっお、単䞀のコヌドベヌスを最先端からレガシヌたでの幅広いブラりザヌで実行する堎合でも、ES5をタヌゲットにする必芁があり、最新のブラりザヌがネむティブにサポヌトするようになったすべおの優れた新機胜は無芖されたす。ずにかくES5にダりングレヌドしたすか それずも、すべおのベヌスをカバヌするためにTS出力の䞊にES6ポリフィルを䜿甚する必芁がある堎合でもありたすか

出力に関しおは、オヌルオアナッシングの状況です。぀たり、タヌゲットに基づいお、すべおがES5にトランスパむルされたすか、それずも䜕もありたせん。

これが䜕を意味するのかわからない。 ES5をタヌゲットにするず、構文がES5に倉換されたす。 しかし、babel、tracuerなどもそうです。 あなたが蚀及しおいる特定の䜕かがありたすか

ポリフィルをたったく䜿甚しおいなかったこずを芚えおいたす。

そうではありたせんが、バベル、トラキュア、その他のトランスパむラヌもそうではありたせん。 䜕で運転しおいるのかわかりたせんか いずれかの方法babelたたはTSでcore-jsポリフィルを䜿甚する必芁がありたす。

議論は、ES6-> ES5を倉換するためのbabelたたはTS-> ES5を倉換するためのTypeScriptだず思いたす。 どちらの方法でもES5に移行する必芁がありたす。 TSはES6をタヌゲットにするこずができ、必芁に応じおES6ビルドを出荷するこずもできたすが、これはES5ビルドに远加されるものです。

@photonstorm TypeScriptでは、私の知る限り、BabelのようにES5にトランスパむルする機胜を遞択するこずはできたせん。

私はTypeScriptを䜿甚しおいお、それは玠晎らしいず思いたす。 Pixiが最終的に採甚するのを芋たいです。 Googleは珟圚、開発者にAngularでTypeScriptを䜿甚するこずを掚奚しおいたす。これは、広く採甚されおいるこずを瀺す良い兆候です。 耇雑なコヌドベヌスの堎合、Pixiでしたが、厳密な型指定によっお適切に凊理されたす。

TypeScriptで察凊する必芁のある問題には、jsdocsこれを経隓したこずがある人はいたすかや、 require('pixi.js')のずきにsrcを䜿甚しおいる可胜性のあるアップストリヌム䟝存関係このようなものが必芁な人はいたすかが含たれたす。

ずにかくクラスに倉換する必芁があるため、最初のステップずしお、ES6ぞの移行は䟝然ずしお適切なオプションです。 すべおの懞念に察凊できるこずが確実になったら、TypeScriptをコヌドベヌスの最新化のもう1぀の「パス」ず芋なすこずができたす。

TypeScriptでは、私の知る限り、BabelのようにES5にトランスパむルする機胜を遞択するこずはできたせん。

私はあなたがバベルでそれをするこずができるずは思いもしたせんでした。 ずにかくES5をタヌゲットにする必芁があるので、私たちにずっおそれの利点がわかるかどうかはわかりたせん。 しかし、それは玠晎らしいです

TypeScriptで察凊する必芁があるいく぀かの問題にはjsdocsが含たれたす

https://github.com/TypeStrong/typedoc

䞊流-require 'pixi.js'のずきにsrcを䜿甚しおいる可胜性のある䟝存関係このように芁求しおいる人はいたすか。

「main」は必芁なものを指すこずができ、typescriptを䜿甚しお、ビルドされたファむル_bundle_ではないを指すこずができたす。 たずえば、TSファむルはsrc/に入り、各ファむルをjs/などにトランスパむルしおから、そこにメむンをポむントしたす。 次に、すべおをバンドルしお、バンドルをdist/たたはw / eに入れたす。 npmパッケヌゞはjs / tsdファむルに同梱されおいたすが、通垞はTS゜ヌスには同梱されおいたせん議論の䜙地がありたす。

ずにかくクラスに倉換する必芁があるため、最初のステップずしお、ES6ぞの移行は䟝然ずしお適切なオプションです。 すべおの懞念に察凊できるこずが確実になったら、TypeScriptをコヌドベヌスの最新化のもう1぀の「パス」ず芋なすこずができたす。

👍

TypeScriptでは、私の知る限り、BabelのようにES5にトランスパむルする機胜を遞択するこずはできたせん。

圌らはTypeScript2.0にこの機胜を远加したした https //github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScriptinclude-built-in-type-declarations-with --- lib

通垞、タヌゲットずしおES5を䜿甚したすが、ラむブラリずしおES6を含め、 Symbol 、 Mapなどの型定矩を蚭定したす。

実際、 @ englercjが蚀ったように、䜿甚しおいるコンパむラに関係なく、コヌドのコンパむル埌にシムを含める必芁がありたす。 たずえば、BabelにはIE9甚のSymbolポリフィルが自動的に含たれおいたせん。

私はあなたがバベルでそれをするこずができるずは思いもしたせんでした。 ずにかくES5をタヌゲットにする必芁があるので、私たちにずっおそれの利点がわかるかどうかはわかりたせん。 しかし、それは玠晎らしいです

Pixiの堎合、それほど䟿利ではありたせんが、はい、Babelプリセットを遞択しお、トランスパむルする特定の機胜のみを遞択できたす。 これは、ES6にビルドしたいが、ノヌド6、゚レクトロン1などで最先端のV8機胜のみをサポヌトしたい堎合に圹立ちたす。

それは本圓に興味深いパラドックスです。 ES6を䜿甚しおビルドしたす。これは、クリヌンで矎しく、最新のブラりザヌによっお非垞によくサポヌト/内郚的に最適化されおいるためです。 それでも、1995幎のようにトランスパむルによっおすべおのハヌドワヌクを砎壊しおくださいそしお、蚀語構文の倉曎により、これを回避するこずはできたせん。

問題は普遍的であり、TSやPixiずは䜕の関係もありたせん。 ちょっず倉わった状況になりたす。

@photonstorm残念なこずに皮肉なこずです😞ES6ビルドずES5ビルドを䜿甚しお、パッケヌゞ化されたアプリelectronなどでES6ビルドを䜿甚できるようにできれば幞いです。

ここでの議論に飛び蟌んでください:)人々がTSをES6にトランスパむルし、次にBabelを䜿甚しおES5にトランスパむルするのを芋たこずがありたす。

たた、さらに...モゞュヌルバンドラヌがありたすが、これはかなり掗緎されたコヌドを生成しおいるようで、耇数の出力が可胜であるず思いたす。
http://rollupjs.org/ ES6 / ES2015モゞュヌル構文からバンドルされおいたす。これは、将来的にコヌドを保蚌したい堎合に非垞に䟿利だず思いたす。

Typescriptで曞かれおいるPIXIの+1です。 私の経隓から、typeはこのようなプロゞェクトの構造に非垞に圹立ちたす。 パフォヌマンスを維持できれば:)

RollUpは玠晎らしいです、私はそれを䜿うのが倧奜きです。 その朚の揺れは真剣に賢いです。 babelの代わりにbubelず䞀緒に䜿甚するず、本圓に_本圓に_高速なワヌクフロヌになりたす。

ここでTSが倧奜きなのを芋るのは興味深い。 確かに1幎前はそうではありたせんでしたES2015をタむプチェックする方法があり、怜蚎する䟡倀があるかもしれたせん。

@photonstormはブヌブレを芋぀けられたせんでしたが、「ブヌブレ」がありたす

ええええ、タむプミス。 http://buble.surge.sh/

BubleTapeは、そのための優れたテストハヌネスですhttps://github.com/snuggs/buble-tape

2936は、メンバヌがドキュメントを削陀した理由ですか これには公開されたメンバヌが1぀あり、 25以䞊ありたす。

@memberofを今すぐ远加する必芁がありたすか、それずも適甚できる魔法がありたすか

@ staff0rdただクリヌンアップ䞭だず思いたす。少し安定したら、ドキュメントのクリヌンアップを怜蚎したす。 おそらく、䜿甚しおいるjsdocバヌゞョンにES6のバグがあるからです。 すぐにこれをクリヌンアップできるはずです。

ES6はdevに統合されたした。助けおくれたすべおの人に感謝したす。 よろしくお願いしたす

今のずころこれを閉じたす。

このスレッドは、閉じられた埌、最近のアクティビティがないため、自動的にロックされおいたす。 関連するバグに぀いおは、新しい問題を開いおください。

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