Seth Ladd: utilizzare Javascript in Dart

Di - 19 June 2013 - in
Post image for Seth Ladd: utilizzare Javascript in Dart

Nonostante le librerie del core di Dart siano ricche di funzioni per le applicazioni web, a volte può essere necessario utilizzare risorse esterne disponibili solo in Javascript; dal blog di +Seth Ladd, Dart Dev Rel presso Google, arriva un nuovo mini tutorial sull’accesso a Javascript da Dart attraverso la libreria js-interop.

Per iniziare ad utilizzare la libreria js-interop dobbiamo importarla nel nostro progetto:

dependencies:
    js: any

Dopodiché importiamo una libreria javascript nel nostro file HTML:

<script src="hugs.js"></script>

Nel tutorial, viene utilizzata la seguente libreria di esempio:

function Hug(strength) {
  this.strength = strength;
}

Hug.prototype.embrace = function(length) {
  return 'Thanks, that was a good hug for ' + length + ' minutes!';
}

Hug.prototype.patBack = function(onDone) {
  onDone('All done.');
}

A questo punto siamo pronti per utilizzare in Dart la libreria hugs.js; dobbiamo innanzitutto creare un contesto all’interno del quale saranno eseguite le funzioni javascript:

import 'dart:html';
import 'package:js/js.dart' as js;

main() {
    var context = js.context;
}

Ora, per ogni funzione javascript definita in hugs.js che vogliamo utilizzare dobbiamo creare un proxy da Dart a Javascript:

var hug = new js.Proxy(context['Hug']);

A questo punto hug è un oggetto Dart nativo, e possiamo utilizzarlo in questo modo:

var result = hug['embrace'](10);

Per creare una funzione di callback si utilizza il metodo js.Callback:

hug['patBack'](new js.Callback.once((msg) {
  query('#output').appendText(' This just in: $msg');
}));

Avendo utilizzato il metodo .once, la callback non sarà più disponibile dopo il primo accesso; per rendere “persistente” una funzione di callback dobbiamo utilizzare il metodo many.

Per maggiori informazioni si può consultare questo articolo di approfondimento pubblicato da Engeene: Dart: la libreria js.

Fonte | Seth Ladd’s Blog

Leave a Reply

Claudio d'Angelis Articolo scritto da

Programmatore e studente di Informatica, appassionato di musica, web e sistemi UNIX. Collabora con Googlab dall'Ottobre 2012.

Contatta l'autore

Previous post:

Next post: