BT

Compiler Scala en JavaScript Avec Scala.js

par Zef Hemel , traduit par Nicolas Frankel le 26 juil. 2013 |

Au Scala Day la semaine dernière, Sébastien Doeraene a présenté Scala.js, un compilateur de Scala en JavaScript. Ce dernier supporte l'intégralité du langage Scala, ce qui permet à ses utilisateurs de construire des applications web de bout en bout et potentiellement de réutiliser le code entre le serveur et le client.

Le code Scala écrit pour Scala.js peut interagir avec le code JavaScript existant soit de manière dynamiquement typée, soit de manière statiquement typée. Le premier cas est plus flexible : l'accès est fourni par l'objet global (window), on peut accéder à des propriétés arbitraires et appeler des méthodes. Toutefois, cela n'utilise pas la nature de typage statique de Scala. Dans le second cas, des méthodes typées de bibliothèques JavaScript peuvent être fournies. Par exemple, pour jQuery :

image

Ces types sont utilisés par le compilateur pour réaliser la vérification de type et pour fournir la complétion de code dans les AGLs. Les signatures de type pour les bibliothèques existantes doivent quand même être écrites à la main, mais l'auteur de Scala.js mène l'enquête pour déterminer si les signatures TypeScript peuvent être utilisées pour générer automatiquement les signatures pour les bibliothèques que TypeScript connaît. Une autre problématique de Scala.js est que la librairie Scala standard fait 16 Mo de JavaScript après avoir été minifiée par le compilateur Google Closure. Diminuer cette taille est prévu.

Ci-dessous un exemple d'utilisation de jQuery depuis Scala.js, pour attacher un gestionnaire de clic à un bouton avec l'identifiant "button". Une fois cliqué, celui-ci ajoute une balise de paragraphe à un div avec l'identifiant "pane" :

jQuery("#button").click { () =>
  val paragraph = jQuery("<p>").html("Hello World!")
  jQuery("div#pane").append(paragraph)
}

Il est aussi possible d'appeler du code généré par Scala depuis JavaScript. Le compilateur génère les dictionnaires de correspondance pour le code compilé, de telle manière que la pile référence l'emplacement dans le code Scala original plutôt que dans le JavaScript généré.

Le compilateur Scala.js est disponible sur github sous licence Scala.

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Contenu Éducatif

Rien ne serait possible sans le soutien et la confiance de nos Sponsors Fondateurs:

AppDynamics   CloudBees   Microsoft   Zenika
Feedback Général
Bugs
Publicité
Éditorial
InfoQ.com et tous les contenus sont copyright © 2006-2013 C4Media Inc. InfoQ.com est hébergé chez Contegix, le meilleur ISP avec lequel nous ayons travaillé.
Politique de confidentialité
BT