Js Interop begann mit package:js. Es wurde mit window.postMessage gebaut.
Später dart:js wurde hinzugefügt, um eine bessere Leistung zu bieten und die Größe der kompilierten js-Datei zu reduzieren. Grundsätzlich ist das Ziel war:
- Tive und Lifecycle manuelle Handhabung Entfernen
- noSuchMethod vermeiden Zusammenstellungsgröße so gering wie möglich
- Objekte zu halten Umbenennung der api verständlichere
Sobald Dart zu machen : js wurde bereit, Paket: js wurde umgeschrieben, um zu verwenden dart: js unter der Abdeckung.
Paket: js bietet eine einfachere Api, die auf Kosten einer Erhöhung der js Größe (weil Paket: js verwendet dart: Spiegel und noSuchMethod) kommt. Hier
ist die gleiche Sache mit Paket getan: js und 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']);
}