BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Compiler Scala en JavaScript Avec Scala.js

Compiler Scala en JavaScript Avec Scala.js

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.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT