Dart supporterà l'uso di librerie JavaScript esistenti?


108

Capisco che Dart si compili in JavaScript e ho letto le specifiche del linguaggio Dart sulle librerie, anche se non ho visto una risposta lì. Anche una ricerca sul loro modulo di discussione per la parola "esistente" restituisce 3 risultati non correlati.

Qualcuno sa se Dart supporterà l'uso di librerie JavaScript esistenti come jQuery o Raphael?


1
anche se sto postando la domanda ora.
TMB

Risposte:


96

La risposta è ora sì! Dart ora fornisce una libreria di interoperabilità JS per utilizzare il codice JavaScript esistente con l'app Dart. Scopri di più qui: https://www.dartlang.org/articles/js-dart-interop/


Grazie per il chiarimento, Seth!
jtmcdole

@Seth ho avuto una domanda di follow-up. Ha davvero molto senso usare le librerie Javascript di Dart, quando Dart è lì per sostituire finalmente Javascript? E Dart ha qualcosa di integrato per la visualizzazione?
Amit Tomar

2
@AmitTomar la community non può eseguire il porting di tutte le librerie JS immediatamente, quindi ha senso utilizzare la grande quantità di librerie JS disponibili. Per quanto riguarda la creazione di grafici (visualizzazione), sono a conoscenza solo dell'interoperabilità con le librerie basate su JS.
Seth Ladd

@SethLadd Grazie Seth, è stato utile.
Amit Tomar

Grazie Seth, ti mostro anche come usarlo in questo articolo .
graphicbeacon

15

Non sarai in grado di chiamare javascript direttamente dal codice dart. La direttiva nativa è riservata alle librerie principali di dartc (dart: core, dart: dom, dart: html, dart: json, ecc.), Che a sua volta si compila in javascript.


hai un riferimento per questo?
TMB

6
Lavoro nel team dartc e internamente si parla di limitare la direttiva nativa e la parola chiave a dart: solo librerie. Puoi certamente guardare qualsiasi funzione principale (ad es. Isolate.dart e isolate.js) e vedere che l'aggiunta della parola chiave "nativa" alla firma di una funzione (nota: nessun corpo nella versione Dart) ti consentirà di chiamare una funzione javascript alterata; ma non promettiamo che non ti spezzeremo in futuro.
jtmcdole

6
Comprendo e rispetto l'ideale di dare al Web un linguaggio pulito e ponderato, ma ti prego di considerare uno strato di interoperabilità. Microsoft ne ha fornito uno da Com a .Net per garantire che i progetti potessero essere migrati in modo incrementale. Ciò non ha affatto ostacolato il successo di .Net; Credo che ne abbia aiutato l'adozione, anche se con il tempo l'hanno migliorata. Se la rottura è qualcosa che preoccupa seriamente, considera un programma su invito per le principali librerie come jQuery, MooTools e script.aculo.us. Grazie.
TMB

2
Ti invito a fare una richiesta di funzionalità tramite il nostro link tracker dei problemi . Non credo che questa decisione sia stata ancora impressa nella pietra.
jtmcdole

1
Sto

8

Ora c'è un nuovo modo più semplice https://pub.dartlang.org/packages/js (attualmente versione 0.6.0-beta.6)

Rendi disponibili classi e funzioni JS per Dart come:

@JS("JSON.stringify")
external String stringify(obj);
@JS('google.maps')
library maps;

// Invokes the JavaScript getter `google.maps.map`.
external Map get map;

// `new Map` invokes JavaScript `new google.maps.Map(location)`
@JS()
class Map {
  external Map(Location location);
  external Location getLocation();
}

// `new Location(...)` invokes JavaScript `new google.maps.LatLng(...)`
//
// We recommend against using custom JavaScript names whenever
// possible. It is easier for users if the JavaScript names and Dart names
// are consistent.
@JS("LatLng")
class Location {
  external Location(num lat, num lng);
}

per ulteriori informazioni vedere il file readme del pacchetto



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.