Documentation

joulu 18, 2021
admin

Pelireititin pystyy tuottamaan Javascript-koodia, jolla voidaan hoitaa reititys Javascriptistä, joka on käynnissä asiakkaan puolella, takaisin sovellukseesi. Javascript-reititin auttaa sovelluksesi refaktoroinnissa. Jos muutat URL-osoitteiden tai parametrien nimien rakennetta, Javascript päivittyy automaattisesti käyttämään uutta rakennetta.

§Savcripti-reitittimen generointi

Ensimmäinen askel Play:n Javascript-reitittimen käyttämiseen on sen generointi. Reititin paljastaa vain eksplisiittisesti ilmoittamasi reitittimet, mikä minimoi Javascript-koodin koon.

Javascript-reitittimen voi luoda kahdella tavalla. Yksi on upottaa reititin HTML-sivuun template-direktiivien avulla. Toinen on luoda Javascript-resursseja toiminnossa, joka voidaan ladata, tallentaa välimuistiin ja jakaa sivujen välillä.

§Sisäänrakennettu reititin

Sisäänrakennettu reititin voidaan luoda käyttämällä @javascriptRouter-direktiiviä Twirl-mallin sisällä. Tämä tehdään tyypillisesti pääkoristelumallin sisällä.

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

Ensimmäinen parametri on sen globaalin muuttujan nimi, johon reititin sijoitetaan. Toinen parametri on luettelo Javascript-reiteistä, jotka sisällytetään tähän reitittimeen.

§Reititinresurssi

Reititinresurssi voidaan luoda luomalla toiminto, joka kutsuu reititingeneraattoria. Sen syntaksi on samanlainen kuin reitittimen upottaminen malliin:

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

Lisää sitten vastaava reitti:

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

Toteutettuasi tämän toiminnon ja lisättäessäsi sen reittitiedostoosi voit sitten sisällyttää sen resurssina malliisi:

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

§Reitittimen käyttäminen

Käyttäen jQuerya esimerkkinä, kutsun tekeminen on niinkin yksinkertaista kuin:

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

Reititin asettaa saataville myös muutamia muita ominaisuuksia, kuten url ja type (HTTP-menetelmä). Esimerkiksi yllä oleva kutsu jQueryn ajax-funktioon voidaan tehdä myös seuraavasti:

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

Yllä oleva lähestymistapa on tarpeen silloin, kun muita ominaisuuksia on asetettava, kuten success, error, context jne.

absoluteURL ja webSocketURL ovat metodeja (ei ominaisuuksia), jotka palauttavat koko url-merkkijonon. Websocket-yhteys voidaan muodostaa kuten:

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

§jQueryn ajax-metodin tuki

Huomautus: Sisäänrakennettu tuki jQueryn ajax-funktiolle poistetaan tulevassa julkaisussa. Tämä sisäänrakennettua tukea koskeva osio on tarkoitettu vain viitteeksi. Älä käytä reitittimen ajax-funktiota uudessa koodissa ja harkitse olemassa olevan koodin päivittämistä mahdollisimman pian. Edellisessä reitittimen käyttöä käsittelevässä osiossa dokumentoidaan, miten jQueryä tulisi käyttää.

Jos jQuery ei ole sinun juttusi tai jos haluat koristella jQueryn ajax-metodia jollakin tavalla, voit tarjota reitittimelle funktion, jota se voi käyttää ajax-kyselyjen suorittamiseen. Tämän funktion on hyväksyttävä ajax-reitittimen metodille välitetty objekti, ja sen on odotettava, että reititin on asettanut sen type– ja url-ominaisuudet reitittimen pyynnölle sopivaan metodiin ja url-osoitteeseen.

Määrittääksesi tämän funktion, välitä toiminnossasi metodiparametri ajaxMethod, esim:

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

Seuraava: Sulautettu reititys-DSL

Vastaa

Sähköpostiosoitettasi ei julkaista.