Dokumentacja

gru 18, 2021
admin

Router gry jest w stanie wygenerować kod Javascript do obsługi routingu z Javascript działającego po stronie klienta z powrotem do twojej aplikacji. Router Javascript pomaga w refaktoryzacji Twojej aplikacji. Jeśli zmienisz strukturę swoich adresów URL lub nazw parametrów, Twój Javascript zostanie automatycznie zaktualizowany, aby użyć tej nowej struktury.

§Generowanie routera Javascript

Pierwszym krokiem do użycia routera Javascript Play jest wygenerowanie go. Router wyświetli tylko te trasy, które jawnie zadeklarujesz, co zminimalizuje rozmiar kodu Javascript.

Są dwa sposoby na wygenerowanie routera Javascript. Jednym z nich jest osadzenie routera w stronie HTML za pomocą dyrektyw szablonu. Drugim jest generowanie zasobów Javascript w akcji, które mogą być pobierane, buforowane i współdzielone między stronami.

§Router wbudowany

Router wbudowany może być generowany przy użyciu dyrektywy @javascriptRouter wewnątrz szablonu Twirl. Zazwyczaj odbywa się to wewnątrz głównego szablonu dekoracji.

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

Pierwszym parametrem jest nazwa zmiennej globalnej, w której zostanie umieszczony router. Drugi parametr to lista tras Javascript, które powinny być zawarte w tym routerze.

§Zasób routera

Zasób routera można wygenerować, tworząc akcję, która wywołuje generator routera. Ma ona podobną składnię do osadzania routera w szablonie:

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

Następnie dodaj odpowiednią trasę:

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

Zaimplementowawszy tę akcję i dodawszy ją do swojego pliku z trasami, możesz następnie umieścić ją jako zasób w swoich szablonach:

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

§Używanie routera

Na przykładzie jQuery, wykonanie wywołania jest tak proste jak:

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

Router udostępnia również kilka innych właściwości, w tym url i type (metoda HTTP). Na przykład powyższe wywołanie funkcji ajax jQuery może być również wykonane w następujący sposób:

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

Powyższe podejście jest wymagane, gdy inne właściwości wymagają ustawienia, takie jak sukces, błąd, kontekst itp.

absoluteURL i webSocketURL są metodami (nie właściwościami), które zwracają pełny łańcuch url. Połączenie Websocket można nawiązać w następujący sposób:

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

§obsługa metody ajax jQuery

Uwaga: Wbudowana obsługa funkcji ajax jQuery zostanie usunięta w przyszłym wydaniu. Ta sekcja dotycząca wbudowanego wsparcia jest podana tylko w celach referencyjnych. Proszę nie używać funkcji ajax routera w nowym kodzie i rozważyć uaktualnienie istniejącego kodu tak szybko jak to możliwe. Poprzednia sekcja dotycząca używania routera dokumentuje, jak powinno się używać jQuery.

Jeśli jQuery nie jest twoją rzeczą, lub jeśli chciałbyś ozdobić metodę ajax jQuery w jakiś sposób, możesz dostarczyć funkcję do routera, aby używał jej do wykonywania zapytań ajax. Ta funkcja musi akceptować obiekt, który jest przekazywany do metody ajax routera, i powinna oczekiwać, że router ustawi właściwości type i url na odpowiednią metodę i adres url dla żądania routera.

Aby zdefiniować tę funkcję, w swojej akcji przekaż parametr metody ajaxMethod, np:

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

Next: Wbudowany Routing DSL

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.