BT

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

Compiler Scala en JavaScript Avec Scala.js

Favoris

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

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

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

Commentaires de la Communauté

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

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

BT

Votre profil est-il à jour? Merci de prendre un instant pour vérifier.

Note: en cas de modification de votre adresse email, une validation sera envoyée.

Nom de votre entreprise:
Rôle dans votre entreprise:
Taille de votre entreprise:
Pays/Zone:
État/Province/Région:
Vous allez recevoir un email pour confirmer la nouvelle adresse email. Ce pop-up va se fermer de lui-même dans quelques instants.