3

最新の js-interop ライブラリに奇妙な変更がいくつか見られましたが、それについて説明できる人がいるかどうか疑問に思っています。

最新バージョンにアップグレードした後、dart2js が機能しなくなったことに気付きました。いくつかの調査の結果、原因は js-interop ライブラリ内の @proxy アノテーションであると結論付けました (ここでも言及されています)。

このため、いくつかのバージョンを切り替えたところ、scoped などの一部の機能が、わずか数日で非推奨になり、その後完全に削除されたことに気付きました! この関数が非推奨としてマークされている中間バージョンを見逃した場合は、それに関する情報を提供するヒントを見逃しています。また、dartlang.org の js ライブラリに関する主要なチュートリアルでは、その大部分が古くなっているという事実についてのヒントさえ与えていないことに注意してください。

バージョン 0.0.26 に戻すことにしましたが、以前と同じように動作しているように見えました... dart で JavaScript コンテキストから変数を取得するときに、js.Proxy オブジェクトではなく dart DateTime オブジェクトを受け取ったことに気付きました。

以前のバージョン (v0.0.25) に戻ると、予想どおり、js コンテキストから変数を使用すると、js.Proxy が返されました。

奇妙なことに、githubではバージョンが 0.0.25 まで (これは期待どおりに動作します)、pubのバージョンにはさらに 3 つのバージョンがあり、何が起こっているのかについての明確な指示がなくても、後方互換性が大幅に失われます (これが必要になる場合もあります)。オン(少しイライラします)。

誰かが何が起こっているのか、そして私が今後何を期待できるのかについて明確にすることができますか?

http://pub.dartlang.org/packages/js

4

1 に答える 1

2

この重大な変更はすべて、package:js の今後の重大な変更と重大な変更: package:js の非推奨の機能の削除で発表されています。

基本的に、0.0.26 か​​らpackage:jsdart:jsでベイクされるようになりました。この変更には、次のようないくつかの変更が伴います。

  • scopes/retain/release はもう必要ありません
  • いくつかのタイプは Dart と Js の間で直接転送され、プロキシされません
    • nullboolnumStringDateTime
    • Blob
    • KeyRange
    • ImageData
    • TypedData、のようなサブクラスを含むInt32Listが、そうではないByteBuffer
    • Node
  • Shadow DOM の要素も転送できるようになりました
  • Callbackが必要とされるようになりました。
  • 本当に大きなパフォーマンスの改善

クイック移行ガイドは次のとおりです。

  • スコープ : remove js.retainjs.releaseおよびjs.scoped.
  • に置き換えnew Callback.xxxx(f)f削除しcallback.dispose()ます。
  • Proxy上記のリストに基づいて転送可能なタイプに置き換えます。
于 2013-11-05T20:56:34.923 に答える