2013-10-18 15 views
7

Überall in der Dart-Dokumentation wird empfohlen, das js-Paket für die JavaScript-Interoperabilität zu verwenden.Was ist ein Unterschied zwischen dart: js und js Paket?

Allerdings habe ich kürzlich festgestellt, dass dart:js Paket in SDK existiert, die ähnliche (aber nicht gleiche) Schnittstelle zu haben scheint.

Gibt es Unterschiede zwischen diesen Paketen? Sind sie gleichwertig? Welcher wird empfohlen?

Antwort

8

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']); 
} 
Verwandte Themen