Documentation

Déc 18, 2021
admin

Le routeur de jeu est capable de générer du code Javascript pour gérer le routage du Javascript s’exécutant côté client vers votre application. Le routeur Javascript aide au refactoring de votre application. Si vous changez la structure de vos URL ou les noms des paramètres, votre Javascript est automatiquement mis à jour pour utiliser cette nouvelle structure.

§Générer un routeur Javascript

La première étape pour utiliser le routeur Javascript de Play est de le générer. Le routeur n’exposera que les routes que vous déclarez explicitement minimisant ainsi la taille du code Javascript.

Il existe deux façons de générer un routeur Javascript. L’une consiste à intégrer le routeur dans la page HTML à l’aide de directives de template. L’autre est de générer des ressources Javascript dans une action qui peut être téléchargée, mise en cache et partagée entre les pages.

§Routeur intégré

Un routeur intégré peut être généré en utilisant la directive @javascriptRouter à l’intérieur d’un modèle Twirl. Cela se fait généralement à l’intérieur du modèle de décoration principal.

@()(implicit request: play.mvc.Http.Request)@helper.javascriptRouter("jsRoutes")( routes.javascript.Users.list, routes.javascript.Users.get)

Le premier paramètre est le nom de la variable globale dans laquelle le routeur sera placé. Le second paramètre est la liste des routes Javascript qui doivent être incluses dans ce routeur.

§Ressource routeur

Une ressource routeur peut être générée en créant une action qui invoque le générateur de routeur. Sa syntaxe est similaire à celle de l’intégration du routeur dans un template:

import play.mvc.Http;import play.routing.JavaScriptReverseRouter;import play.mvc.Controller;import play.mvc.Result;
public Result javascriptRoutes(Http.Request request) { return ok(JavaScriptReverseRouter.create( "jsRoutes", "jQuery.ajax", request.host(), routes.javascript.Users.list(), routes.javascript.Users.get())) .as(Http.MimeTypes.JAVASCRIPT);}

Puis, ajoutez la route correspondante:

GET /javascriptRoutes controllers.Application.javascriptRoutes(request: Request)

Ayant implémenté cette action, et l’ajoutant à votre fichier routes, vous pouvez ensuite l’inclure comme ressource dans vos templates :

<script type="text/javascript" src="@routes.Application.javascriptRoutes"></script>

§Utilisation du routeur

En prenant jQuery comme exemple, faire un appel est aussi simple que :

$.ajax(jsRoutes.controllers.Users.get(someId)) .done( /*...*/ ) .fail( /*...*/ );

Le routeur met également à disposition quelques autres propriétés dont le url et le type (la méthode HTTP). Par exemple, l’appel ci-dessus à la fonction ajax de jQuery peut également être effectué comme:

var r = jsRoutes.controllers.Users.get(someId);$.ajax({url: r.url, type: r.type, success: /*...*/, error: /*...*/ });

L’approche ci-dessus est nécessaire lorsque d’autres propriétés doivent être définies telles que le succès, l’erreur, le contexte, etc.

Les absoluteURL et les webSocketURL sont des méthodes (et non des propriétés) qui renvoient la chaîne url complète. Une connexion Websocket peut être établie comme:

var r = jsRoutes.controllers.Users.list();var ws = new WebSocket(r.webSocketURL());ws.onmessage = function(msg) { /*...*/};

§support de la méthode ajax de jQuery

Note : Le support intégré de la fonction ajax de jQuery sera supprimé dans une prochaine version. Cette section sur le support intégré est fournie à titre de référence uniquement. Veuillez ne pas utiliser la fonction ajax du routeur dans un nouveau code et envisager de mettre à niveau le code existant dès que possible. La section précédente sur l’utilisation du routeur documente la façon dont jQuery doit être utilisé.

Si jQuery n’est pas votre truc, ou si vous souhaitez décorer la méthode jQuery ajax d’une certaine façon, vous pouvez fournir une fonction au routeur à utiliser pour effectuer des requêtes ajax. Cette fonction doit accepter l’objet qui est passé à la méthode ajax du routeur, et doit s’attendre à ce que le routeur ait défini les propriétés type et url sur lui à la méthode et à l’url appropriées pour la requête du routeur.

Pour définir cette fonction, dans votre action, passez le paramètre de méthode ajaxMethod, par exemple:

JavaScriptReverseRouter.create( "jsRoutes", "myAjaxMethod", request.host(), routes.javascript.Users.list(), routes.javascript.Users.get())

Suivant : DSL de routage embarqué

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.