martes, 2 de enero de 2018

Laravel DataTables 1

En caso de que usted no lo hubiera leído ya, Laravel DataTables básicamente consiste en un componente para enviar desde Laravel datos en JSON, destinados a un jQuery DataTables en modo server-side.

Si usted había utilizado DataTables, es posible que se hubiese conformado con el modo fácil, basado en DOM: generar desde el backend una tabla HTML con absolutamente toda la información, y ejecutar DataTables encima con jQuery. De esta manera el navegador se encarga del paginado, orden, filtros, y todas las bondades que DataTables lleva años ofreciendo.

Esas bondades dejan de ser tan bonitas cuando la tabla contiene miles de entradas. El servidor tardará en procesar todo ese HTML. El cliente estará utilizando demasiada memoria. Cada interacción puede tardar más de lo debido. El usuario se impacientará cuando "solo" quiere buscar los artículos vendidos tal día por tal empleado con tal método de pago.

Ahí es cuando entra en acción el modo server-side processing. Cada vez que se pasa de página, o se utiliza un filtro, DataTables llamará por AJAX al servidor para pedirle información; solo la necesaria para rellenar la vista actual, y no toda de golpe. La diferencia de rendimiento y estabilidad empieza a ser evidente, ¿verdad?

Laravel DataTables se encarga de que el lado de servidor sea fácil. Puede bastar con crear una ruta, coger un modelo y aplicarle una función. Luego en el front-end se inicializa DataTables con unas pocas opciones, y ya está el funcionamiento básico en marcha y en toda su gloria.

Con varios de mis proyectos me he topado exactamente con el problema descrito antes. Para esto Laravel DataTables me ha parecido un rayo de esperanza (o de luz verde). Y lo he puesto en práctica hace poco.

Por supuesto no iba a ser tan fácil: este proyecto era un poco viejo, y no estaba basado en Laravel. Tuve que hacer algunos trucos para aprovechar Laravel igualmente. Y he tenido que invertir bastantes horas para implementar en el front-end exactamente los mismos filtros que tenían antes. Finalmente he conseguido que apenas se note la diferencia, excepto en que ahora funciona fantásticamente, en lugar de tardar medio minuto en abrir la tabla.

A partir del siguiente capítulo contaré los detalles de esta pequeña aventura.

No hay comentarios:

Publicar un comentario