2013-10-18 9 views
7

Ovunque nella documentazione Dart si consiglia di utilizzare il pacchetto js per l'interoperabilità javascript.Che differenza c'è tra il pacchetto dart: js e js?

Tuttavia, ho trovato di recente che il pacchetto dart:js esiste in SDK che sembra avere un'interfaccia simile (ma non uguale).

Esistono differenze tra questi pacchetti? Sono funzionalità equivalenti? Quale è raccomandato?

risposta

8

Js interop avviato con package:js. E 'stato costruito con con window.postMessage.

Successivamente è stato aggiunto dart:js per fornire prestazioni migliori e ridurre la dimensione del file js compilato. Fondamentalmente l'obiettivo sono stati:

  • rimozione scopi e movimentazione manuale del ciclo di vita
  • evitando noSuchMethod mantenere dimensioni compilazione più basso possibile
  • rinomina oggetti per fare api più comprensibile

volta dardo : js è pronto, pacchetto : js è stato riscritto per utilizzare freccia: js sotto la copertina.

pacchetto: js fornisce un'API più semplice che viene al costo di un aumento delle dimensioni js (perché pacchetto: js utilizza dardo: specchi e noSuchMethod).

Qui è la stessa cosa fatta con pacchetto: js e dardo: 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']); 
} 
Problemi correlati