Dart ドキュメントのどこでも、js
javascript の相互運用性のためにパッケージを使用することをお勧めします。
しかし、最近dart:js
、SDK に類似した (ただし同じではない) インターフェースを持つパッケージが存在することがわかりました。
これらのパッケージに違いはありますか? それらは同等の機能ですか?どれがおすすめ?
Dart ドキュメントのどこでも、js
javascript の相互運用性のためにパッケージを使用することをお勧めします。
しかし、最近dart:js
、SDK に類似した (ただし同じではない) インターフェースを持つパッケージが存在することがわかりました。
これらのパッケージに違いはありますか? それらは同等の機能ですか?どれがおすすめ?
Js 相互運用はpackage:jsで開始されました。window.postMessageで構築されました。
その後、dart:jsが追加され、パフォーマンスが向上し、コンパイルされた js ファイルのサイズが縮小されました。基本的に目標は次のとおりです。
dart :jsの準備が整うと、package:jsが書き直され、dart:jsを内部で使用するようになりました。
package:jsはよりシンプルな Api を提供しますが、js サイズが大きくなります ( package:jsはdart:mirrorsとnoSuchMethodを使用するため)。
これはpackage:jsとdart: jsで行われた同じことです:
import 'package:js/js.dart' as js;
main() {
var pixi = new js.Proxy(js.context.PIXI.Stage, 0xffffff);
var renderer = js.context.PIXI.autoDetectRenderer(400, 400);
document.body.append(renderer.view);
}
import 'dart:js' as js;
main() {
var pixi = new js.JsObject(js.context['PIXI']['Stage'], [0xffffff]);
var renderer = js.context['PIXI'].callMethod('autoDetectRenderer', [400, 400]);
document.body.append(renderer['view']);
}
GitHubでこれに関係なく、応答を受け取りました:
そのスタックオーバーフローのコメントは時代遅れです。優先
package:js
- 明示的に推奨するドキュメントの更新に取り組んでいます。これはもはや実装されていませんwindow.postMessage
(これは Dartium ベースのソリューションでした)。コンパイラで直接処理され、より効率的であるはずですdart:js
。
ソース: https://github.com/flutter/flutter/issues/35588#issuecomment-522097151