Dart prendra-t-il en charge l'utilisation des bibliothèques JavaScript existantes?

108

Je comprends Dart compile en JavaScript, et j'ai lu la spécification du langage Dart sur les bibliothèques, bien que je n'y ai pas vu de réponse. Une recherche sur leur formulaire de discussion pour le mot «existant» donne également 3 résultats qui ne sont pas liés.

Est-ce que quelqu'un sait si Dart prendra en charge l'utilisation de bibliothèques JavaScript existantes telles que jQuery ou Raphael?

TMB
la source
1
bien que je poste la question maintenant.
TMB

Réponses:

96

La réponse est maintenant oui! Dart propose désormais une bibliothèque JS-interop pour utiliser le code JavaScript existant avec votre application Dart. En savoir plus ici: https://www.dartlang.org/articles/js-dart-interop/

Seth Ladd
la source
Merci pour la clarification, Seth!
jtmcdole
@Seth J'avais une question complémentaire. Est-ce que cela a vraiment beaucoup de sens d'utiliser les bibliothèques Javascript de Dart, alors que Dart est là pour enfin remplacer Javascript? Et Dart a-t-il quelque chose d'intégré pour la visualisation?
Amit Tomar
2
@AmitTomar la communauté ne peut pas porter immédiatement sur toutes les bibliothèques JS, il est donc logique d'utiliser la grande quantité de bibliothèques JS disponibles. En ce qui concerne la représentation graphique (visualisation), je ne suis conscient que de l'interopérabilité avec les bibliothèques basées sur JS.
Seth Ladd
@SethLadd Merci Seth, cela a été utile.
Amit Tomar
Merci Seth, je montre également comment l'utiliser dans cet article .
graphicbeacon
15

Vous ne pourrez pas appeler javascript directement à partir du code de fléchettes. La directive native est réservée aux bibliothèques de base de dartc (dart: core, dart: dom, dart: html, dart: json, etc), qui se compile lui-même en javascript.

jtmcdole
la source
avez-vous une référence pour cela?
TMB
6
Je travaille dans l'équipe dartc et en interne, il est question de restreindre la directive et le mot-clé natifs à dart: bibliothèques uniquement. Vous pouvez certainement regarder toutes les fonctions de base (par exemple isolate.dart & isolate.js) et voir que l'ajout du mot-clé "native" à une signature de fonction (note: pas de corps dans la version Dart) vous permettra d'appeler une fonction javascript déformée; mais nous ne faisons aucune promesse que nous ne vous briserons pas à l'avenir.
jtmcdole
6
Je comprends et respecte l'idéal de donner au Web un langage clair et réfléchi, mais je vous prie de considérer une couche d'interopérabilité. Microsoft en a fourni un de Com vers .Net pour garantir que les projets puissent être migrés de manière incrémentielle. Cela n'a pas du tout entravé le succès de .Net; Je pense que cela a aidé à son adoption, même s'ils l'ont amélioré avec le temps. Si la rupture est quelque chose qui vous préoccupe sérieusement, envisagez un programme d'invitation pour les principales bibliothèques telles que jQuery, MooTools et script.aculo.us. Je vous remercie.
TMB
2
Je vous invite à faire une demande de fonctionnalité via notre suivi des problèmes @ link . Je ne pense pas que cette décision soit encore gravée dans le marbre.
jtmcdole
1
Soulignant
jtmcdole
8

Il existe maintenant un nouveau moyen plus simple https://pub.dartlang.org/packages/js (actuellement version 0.6.0-beta.6)

Rendre les classes et fonctions JS disponibles pour Dart comme:

@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);
}

pour en savoir plus voir le readme du paquet

Günter Zöchbauer
la source
4

Voir ce fil du forum de discussion: Appel de l'ancien code javascript .

Lukas Renggli
la source
1
ils font référence au mot-clé natif, mais je ne trouve pas cela dans la référence de la bibliothèque ou la spécification du langage.
TMB
4

Il y a aussi une dart:jsbibliothèque. Et voici un article expliquant comment utiliser cette bibliothèque pour interagir avec JavaScript.

Shailen Tuli
la source
1
Notez que le lien est inexact. Dart / JS, qui fait partie des principales bibliothèques de fléchettes, est beaucoup plus facile et plus propre à utiliser pour s'interfacer avec javascript. Je ne vois rien d'officiel sur le sujet, mais cela fait partie du SDK: api.dartlang.org/stable/1.17.1/dart-js/dart-js-library.html
BeatingToADifferentRobot