Documentație

dec. 18, 2021
admin

Routerul de joc este capabil să genereze cod Javascript pentru a gestiona rutarea de la Javascript care rulează pe partea clientului către aplicația dumneavoastră. Routerul Javascript ajută la refactorizarea aplicației dumneavoastră. Dacă schimbați structura URL-urilor sau a numelor de parametri, Javascript-ul dvs. este actualizat automat pentru a utiliza noua structură.

§Generarea unui router Javascript

Primul pas pentru a utiliza router-ul Javascript al Play este generarea acestuia. Routerul va expune doar rutele pe care le declarați în mod explicit, minimizând astfel dimensiunea codului Javascript.

Există două moduri de a genera un router Javascript. Una este de a încorpora routerul în pagina HTML folosind directive de șablon. Celălalt este de a genera resurse Javascript într-o acțiune care poate fi descărcată, pusă în cache și partajată între pagini.

§Router încorporat

Un router încorporat poate fi generat folosind directiva @javascriptRouter în interiorul unui șablon Twirl. Acest lucru se face de obicei în interiorul șablonului principal de decorare.

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

Primul parametru este numele variabilei globale în care va fi plasat routerul. Al doilea parametru este lista de rute Javascript care ar trebui să fie incluse în acest router.

§Router resource

O resursă de router poate fi generată prin crearea unei acțiuni care invocă generatorul de router. Aceasta are o sintaxă similară încorporării routerului într-un șablon:

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

Apoi, adăugați ruta corespunzătoare:

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

După ce ați implementat această acțiune și ați adăugat-o în fișierul dvs. de rute, o puteți include ca resursă în șabloanele dvs:

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

§Utilizarea routerului

Utilizând jQuery ca exemplu, realizarea unui apel este la fel de simplă ca:

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

Routerul pune la dispoziție și alte câteva proprietăți, inclusiv url și type (metoda HTTP). De exemplu, apelul de mai sus către funcția ajax de la jQuery poate fi, de asemenea, efectuat ca:

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

Abordarea de mai sus este necesară în cazul în care este necesară setarea altor proprietăți, cum ar fi succes, eroare, context etc.

absoluteURL și webSocketURL sunt metode (nu proprietăți) care returnează șirul URL complet. O conexiune Websocket poate fi realizată ca:

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

§Suportul metodei ajax jQuery

Nota: Suportul încorporat pentru funcția ajax a jQuery va fi eliminat într-o versiune viitoare. Această secțiune privind suportul încorporat este furnizată doar în scop de referință. Vă rugăm să nu utilizați funcția ajax a routerului în codul nou și să luați în considerare actualizarea codului existent cât mai curând posibil. Secțiunea anterioară referitoare la utilizarea routerului documentează modul în care ar trebui utilizat jQuery.

Dacă jQuery nu este un lucru care vă interesează sau dacă doriți să decorați metoda ajax jQuery într-un anumit fel, puteți furniza o funcție pe care routerul să o utilizeze pentru a efectua interogări ajax. Această funcție trebuie să accepte obiectul care este transmis metodei routerului ajax și ar trebui să se aștepte ca routerul să fi setat proprietățile type și url pe acesta la metoda și adresa URL corespunzătoare pentru cererea routerului.

Pentru a defini această funcție, în acțiunea dvs. treceți parametrul de metodă ajaxMethod, de exemplu:

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

Next: DSL de rutare încorporată

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.