Dokumentáció
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