Dokumentáció

dec 18, 2021
admin

A játék útválasztó képes Javascript kódot generálni, hogy kezelje az útválasztást a kliens oldalon futó Javascriptből vissza az alkalmazáshoz. A Javascript útválasztó segíti az alkalmazás refaktorálását. Ha megváltoztatja az URL-ek vagy a paraméternevek szerkezetét, a Javascript automatikusan frissül, hogy az új szerkezetet használja.

§A Javascript útválasztó generálása

A Play Javascript útválasztó használatának első lépése a generálás. Az útválasztó csak azokat az útvonalakat tárja fel, amelyeket kifejezetten deklarál, így minimalizálva a Javascript kód méretét.

A Javascript útválasztó generálásának két módja van. Az egyik az útválasztó beágyazása a HTML oldalba sablon direktívák segítségével. A másik az, hogy Javascript erőforrásokat generálunk egy akcióban, amelyek letölthetők, gyorsítótárba helyezhetők és megoszthatók az oldalak között.

§Embedded router

A beágyazott router a @javascriptRouter direktíva segítségével generálható egy Twirl sablonon belül. Ez általában a fő díszítő sablonon belül történik.

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

Az első paraméter annak a globális változónak a neve, amelybe a router kerül. A második paraméter azoknak a Javascript útvonalaknak a listája, amelyeket ebbe a routerbe kell foglalni.

§Router erőforrás

A router erőforrást egy olyan művelet létrehozásával lehet létrehozni, amely meghívja a router generátort. Ez hasonló szintaxissal rendelkezik, mint a router beágyazása egy sablonba:

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

Ezután adjuk hozzá a megfelelő útvonalat:

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

Azt követően, hogy megvalósítottuk ezt az akciót, és hozzáadtuk az útvonalfájlunkhoz, ezt követően erőforrásként beépíthetjük a sablonjainkba:

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

§A router használata

A jQuery-t használva példaként, a hívás végrehajtása olyan egyszerű, mint:

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

A router néhány más tulajdonságot is elérhetővé tesz, beleértve a url és a type (a HTTP-módszert). Például a jQuery ajax függvényének fenti hívása a következőképpen is elvégezhető:

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

A fenti megközelítésre akkor van szükség, ha más tulajdonságokat kell beállítani, mint például a siker, hiba, kontextus stb.

A absoluteURL és a webSocketURL módszerek (nem tulajdonságok), amelyek a teljes url karakterláncot adják vissza. A Websocket-kapcsolatot így lehet létrehozni:

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

§jQuery ajax módszer támogatása

Megjegyzés: A jQuery ajax funkciójának beépített támogatása egy későbbi kiadásban megszűnik. Ez a beépített támogatásról szóló szakasz csak referenciaként szolgál. Kérjük, ne használja a router ajax funkcióját új kódban, és fontolja meg a meglévő kód mielőbbi frissítését. Az útválasztó használatáról szóló előző szakasz a jQuery használatának módját dokumentálja.

Ha a jQuery nem az ön dolga, vagy ha a jQuery ajax módszerét szeretné valamilyen módon kidekorálni, akkor megadhat egy függvényt az útválasztónak, amelyet az ajax-lekérdezések végrehajtásához használ. Ennek a függvénynek el kell fogadnia a ajax router metódusnak átadott objektumot, és el kell várnia, hogy a router a type és url tulajdonságait a router kérésének megfelelő metódusra és url-re állítsa be.

A függvény definiálásához a műveletben adja át a ajaxMethod metódus paraméterét, pl:

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

Next: Beágyazott útválasztó DSL

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.