LungoJS usando RESTful + Templating + Cache (screencast)

16 comentarios

Si algo ha ocurrido con la entrada de Ajax allá por 2005 fue que el paradigma del desarrollo web cambió por completo. Con AJAX llegaron las peticiones asíncronas (aunque Microsoft ya las tenia anteriormente) hemos conseguido que la interacción usuario-web sea más ágil y optimizada. Curiosamente durante estos últimos años estamos viendo como los WebDevelopers están creando técnicas que realmente aprovechan la capacidad de Ajax. Ahora el “frontend” tiene mucho que hacer ya no solo es el encargado de renderizar html y ejecutar unas cuantas lineas de JavaScript, ahora el frontal debe hacer mucho trabajo, consiguiendo así liberar de proceso al “backend”. Prácticas habituales como pueden ser la ordenación y búsqueda de resultados ya no tiene porque procesarla nuestro servidor, no tenemos que subestimar la capacidad de nuestro front porque en muchas ocasiones es mas potente que el propio servidor.

En esta ocasión vamos a descubrir alguna de las “features” de LungoJS gracias a su extensa API JavaScript, demostrando que no es casualidad que el proyecto termine por las siglas JS (JavaScript). LungoJS es conocedor de que el frontend es muy importante en toda WebApp y nos proveé de técnicas avanzadas como pueden ser: DataBinding o Caching de una manera sencilla y semántica.

En apenas 30 minutos que dura este screencast, descubriremos una práctica habitual en toda webapp:

  • Consumir un servicio RESTful: En este caso un JSON del servicio Panoramio
  • Crear un template para los resultados del servicio
  • Ejecutar un DataBinding entre RESTful y Template
  • Crear un sistema de “caching” para no volver a llamar al RESTful (si no es necesario)

LungoJS como hemos podido comprobar nos pone las cosas fáciles (muy fáciles) para que realmente nos esforcemos en crear una mejor app evitando realizar estructuras repetitivas. Es aquí donde se encuentra el fuerte de LungoJS respecto al resto de frameworks, en su API JavaScript que realmente aprovecha y nos ayuda las capacidades actuales de nuestros navegadores. En próximos screencasts descubriremos otras técnicas y trucos que se esconden dentro de LungoJS y os animo a que nos mandéis sugerencias a la comunidad que se ha creado en http://community.lungojs.com.

Este es el segundo screencast que ofrecemos gracias a la colaboración de Javier Jimenez. Nos gustaría que nos dijerais en los comentarios: ¿Qué funcionalidades os gustaría ver explicadas en los próximos Screencast? Vuestros deseos son ordenes.

Avatar de Javi Jimenez

Javi Jiménez es el CEO y Lider Creativo de Tapquo, empresa especializada en desarrollo móvil HTML5 y creadora de nuevas experiencias en movilidad.

Evangelista de los estándares WEB, enamorado empedernido de JavaScript y autor del framework LungoJS y de la libreria QuoJS

Puedes seguirlo en Twitter: @soyjavi


Más información | LungoJs
En Genbeta Dev | LungoJS: “easy prototype” o lo fácil que es crear prototipos de WebApps

Anunciate aquí
Anunciate aquí
Anunciate aquí

¿Quieres saber más?

Productos

Información de Productos relacionados con el artículo

Lungo.js lungojs
  • 1
  • 3

Puntuación media: 9,5

Ver más

Artículos

Artículos relacionados que probablemente también te interesen

Ver más

Respuestas

Preguntas sobre este tema que ha contestado la comunidad

+ Deja tu comentario

Comentarios

  • 1

    Avatar de Jose Juan !

    Cuando Juan Quijano nos mostró LungoJS ya dije que su estilo me gustaba mucho.

    La parte de MVC del podcast sigue esa línea sencilla y potente.

    Lo que ya no entiendo es la forma tan enrevesada de cachear la llamada, cuando se puede hacer trivialmente, por ejemplo en "service.js":

    if(this.cached_data) return this.cached_data;

    var self = this;

    $$.get(... function(result) { self.cached_data = result; ...

    y ya.

    Además, el sistema de caché hay que intentar que sea transparente a todo el sistema y esté lo más cerca posible de la fuente de datos (ej. como he indicado); en el podcast se extiende el sistema de caché nada más y nada menos que a los archivos "events.js", "service.js" y "data.js".

    Quizás haya alguna razón para haberlo hecho así (ej. para mostrar el almacenamiento y acceso a datos usando Data.Sql) aunque yo no la veo.


    NOTA: ¡¿para cuando posibilidad de meter código (ej. vía <TAG>)?!

    -- editado por última vez a las 10:32

  • Respondiendo a #1:
  • 2

    !
    | 1 estrellas

    Muy sencillo Jose Juan, lo que tu propones no cache sobre WebSQL vamos que solo estas cacheando el objeto. Imaginate que necesitas del conjunto de datos obtener algo especifico (lanzando una SQL)...

    Tambien existe otro "ingrediente" dentro de LungoJS que es para los cacheos que tu propones: lng.Data.Cache

  • Respondiendo a #2:
  • 3

    Avatar de Jose Juan !

    "Imaginate que necesitas del conjunto de datos obtener algo especifico"

    Entonces (como ya he dicho ["...aunque yo no la veo"]) te estás imaginando otro problema, con otra solución.

    Si vamos al grano (lo que hace el podcast, ni más, ni menos), si tu haces una petición REST, respecto a la caché:

    1. confía que el servidor envíe información de caducidad y que el cliente sepa administrarla. Ergo, olvídate del tema de caché.

    2. si [1] no funciona, házlo simple (ej. si tu framework admite .get(url, {cache: true})

    3. si [2] tampoco funciona, házlo simple (ej. this.cached_data = bla, bla)

    Si lo que queremos es mostrar el uso de Data.Sql, sugiero usar otros ejemplos y, en cualquier caso, mantengo mi opinión de que está enrevesado.

    Gracias.

    (nota, desconozco si mi tono suena tosco o no, independientemente de que esté en lo cierto o no, hago la crítica con la intención de mejorar la claridad de los post y/o mi conocimiento de ellos)

  • Respondiendo a #3:
  • 5

    Avatar de Eagle !

    Jaja, bueno, yo creo que sí suena algo tosco (solo algo, ¿eh?), pero los que ya te conocemos sabemos que lo haces con la mejor de las intenciones.

    Se dice muchas veces que los más inteligentes suelen ser menos expresivos (o no se preocupan por serlo). Este parece ser un ejemplo.

    Tenemos un ejemplo en Wozniak y su contraejemplo en Jobs. Vamos, una tontería como otra cualquiera.

    Javi, me encantan estos screencast, en poco tiempo enseñas ejemplos prácticos y sencillos. Solo tengo un pero: ¿vale? (se repite mucho esa coletilla, si pudieras reducir su uso quedaría más "mejor", no es importante pero ayuda a método didáctico.

  • Respondiendo a #5:
  • 6

    !
    | 1 estrellas

    Vale :)

  • Respondiendo a #6:
  • 7

    Avatar de Eagle !

    Que por cierto no sé si te lo había dicho antes, pero está "cojonudo" LungoJS.

    Tengo unas ganas de terminar los tres proyectos en los que estoy metido para empezar uno con LungoJS que no puedo, pero hasta Julio no voy a tener tiempo. Igual así ya me pongo con la versión 1.2 que comentas en el vídeo.

  • 4

    !
    | 1 estrellas

    Siempre digo lo mismo cuando hay alguna noticia sobre LungoJS pero creo que nunca está de más, gracias a @soyjavi y a todo el equipo de LungoJS por facilitarnos el aprendizaje a los novatos en este mundo.

    pd: no he podido ver el screencast, en cuanto pueda lo veo y comento que me gustaría ver para próximos screencast.

    Saludos!

  • 8

    Avatar de isola009 !

    Nuevamente reconocer la grandiosidad del screencast y nuevamente reconocer que vuelven a haber ausencias de tildes y algún otro error gramatical, como es el caso de "ya no tiene PORQUE procesarla" cuando es "por qué".


    Ya dices en el video que estás modificando el tema de las plantillas, y espero que esa modificación elimine la forma de crearlas dentro de un string de javascript. Es mucho más limpio y mejor crear plantillas HTML con etiquetas script de tipo text/template.

    -- editado por última vez a las 18:13

  • Respondiendo a #8:
  • 9

    Avatar de Jose Juan !

    "con etiquetas script de tipo text/template"

    ¡Muy buena!, me gusta.

    Habitualmente uso mecanismos como $.get, pero en situaciones en que se debe cargar al inicio (o va incrustada en la página por ser plantilla específica) el uso de text/template es genial.

    Desde luego, separar las plantillas es muy recomendable, sobre todo si maquetan personas diferentes a los programadores.

  • Respondiendo a #9:
  • 10

    !
    | 1 estrellas

    Tranquilos en la 1.2 el sistema de "templating" va a ser mucho robusto, solo os pido un poquito de tiempo... tener en cuenta que LungoJS lo estoy desarrollando solo (ahora mismo). Y el avance es lento pero seguro.... :)

    El templating de la 1.2 va a tener precompilado de templates remotos/locales... creación de templates por JSON y muchas mas cosas... pero solo os pido un poco de paciencia.

    Saludos y buen code!

  • Respondiendo a #10:
  • 11

    Avatar de isola009 !

    "solo os pido un poco de paciencia"

    Faltaría más. Tómate el tiempo que necesites. Agradecidos estamos por lo ya realizado.

  • 12

    Avatar de drjer !
    drjer | 1 estrellas

    Ya seguí el primer videotutorial y me encanta la manera de funcionar de lungojs.

    Pero me he encontrado algún problema. En el tutorial todo bien, pero al intentar hacer algún test diferente por mi cuenta no me funciona el scrolling, y al cargar con android 2.3 no me aparece el botón de mostrar el menú lateral.

    Tampoco funciona la url de http://community.lungojs.com/, da un error 500.

  • 13

    !

    Por fin otro screencast! ^^ cuanto mas aprendo de lungo mas me gusta. Encuentro que es hna forma muh estrucutrada y limpia de desarrollar y sobretodo me encanta como aprovecha la semantica del html.

    Un saludo ;)

  • 14

    !
    | 1 estrellas

    Como se llama el editor de código que usas en el screencast? Es el Kod?

  • Respondiendo a #14:
  • 15

    Avatar de Eagle !

    SublimeText 2 (en beta pero gratis de momento)

  • Respondiendo a #15:
  • 16

    !
    | 1 estrellas

    Esta guapísimo!

Escribir un comentario

Para hacer un comentario es necesario que te identifiques: ENTRA o conéctate con Facebook Connect

Anunciate aquí

WSL Weblogs SL