Documentación

Dic 18, 2021
admin

El router de juego es capaz de generar código Javascript para manejar el enrutamiento de Javascript que se ejecuta en el lado del cliente de nuevo a su aplicación. El enrutador Javascript ayuda en la refactorización de su aplicación. Si cambias la estructura de tus URLs o nombres de parámetros tu Javascript se actualiza automáticamente para usar esa nueva estructura.

§Generar un router Javascript

El primer paso para usar el router Javascript de Play es generarlo. El enrutador sólo expondrá las rutas que declare explícitamente minimizando así el tamaño del código Javascript.

Hay dos formas de generar un enrutador Javascript. Una es incrustar el enrutador en la página HTML usando directivas de plantilla. La otra es generar recursos Javascript en una acción que puede ser descargada, almacenada en caché y compartida entre páginas.

§Rutador incrustado

Un rutero incrustado puede ser generado usando la directiva @javascriptRouter dentro de una plantilla Twirl. Esto se hace normalmente dentro de la plantilla de decoración principal.

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

El primer parámetro es el nombre de la variable global en la que se colocará el enrutador. El segundo parámetro es la lista de rutas Javascript que deben incluirse en este enrutador.

§Recurso del enrutador

Un recurso del enrutador puede generarse creando una acción que invoque al generador de enrutadores. Tiene una sintaxis similar a la de incrustar el enrutador en una plantilla:

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

Entonces, añade la ruta correspondiente:

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

Habiendo implementado esta acción, y añadiéndola a tu archivo de rutas, puedes incluirla como recurso en tus plantillas:

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

§Usando el enrutador

Usando jQuery como ejemplo, hacer una llamada es tan simple como:

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

El enrutador también pone a disposición algunas otras propiedades incluyendo el url y el type (el método HTTP). Por ejemplo, la llamada anterior a la función ajax de jQuery también se puede hacer como:

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

El enfoque anterior es necesario cuando se necesitan establecer otras propiedades como éxito, error, contexto, etc.

El absoluteURL y el webSocketURL son métodos (no propiedades) que devuelven la cadena de url completa. Una conexión Websocket puede hacerse como:

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

§Soporte del método ajax de jQuery

Nota: El soporte incorporado para la función ajax de jQuery será eliminado en una futura versión. Esta sección sobre el soporte incorporado se proporciona sólo como referencia. Por favor, no utilice la función ajax del enrutador en código nuevo y considere actualizar el código existente tan pronto como sea posible. La sección anterior sobre el uso del router documenta cómo debe usarse jQuery.

Si jQuery no es lo tuyo, o si quieres decorar el método ajax de jQuery de alguna manera, puedes proporcionar una función al router para que la use para realizar consultas ajax. Esta función debe aceptar el objeto que se pasa al método ajax del enrutador, y debe esperar que el enrutador haya establecido las propiedades type y url en él para el método y la url apropiados para la solicitud del enrutador.

Para definir esta función, en su acción pase el parámetro ajaxMethod del método, por ejemplo:

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

Siguiente: DSL de enrutamiento embebido

Deja una respuesta

Tu dirección de correo electrónico no será publicada.