Preprocesadores para desarrollar las páginas Web y PreprocessJS

Hace algunos dias, platicando con algunos desarrolladores que nunca habian programado una página web dinamica con algunas de las tecnologias mas comunes para realizarlas, me pregunto uno de ellos, ¿en si como funcionaba un JSP ó un PHP ó un ASP o un GSP ...? .

La respuesta que le di fue desde luego algo minimalista, por que se que esas tecnologias funcionan gracias a los framewroks y a los lenguages subyacentes que permiten crear el contenido dinámico de las páginas web, plus los servidores web (apache, tomcat, jboss, websphere, iis etc.) que permiten las conexiones en internet via sockets y el protocolo TCP/IP.

Y lo que de una o de otra forma le comente es que esos lenguages de scripting en gran medida(hablando en la capa de desarrollo de aplicaciones web) preprocesaban archivos que tienen incrustado HTML, Javascript y un lenguaje de alto nivel como Java, Groovy, C#, Vb.Net, o más propietarios como el PHP que es (C syntaxis like).

Le comente que las tenologias web estan en constante desarrollo y casi todos los dias hay nuevas versiones, mejoras , y que no hay que reinventar la rueda. Hasta alli todo era como una platica mas o menos cotidiana para los nuevos desarrolladores web, pero el tema de pronto planteo una incognita cuando el tema viro de los servidores de aplicaciones Web a los dispositivos móviles.

El punto es que un developer con conocimientos Web puede desarrollar una serie de aplicaciones para dispositivos móviles (con cierto alcance funcional) para dispositivos móviles con tecnologias como Phonegap o Apache Cordova.

Esas tecnologías permiten usar sus APIs y combinan los conocimientos de web mas el webkit browser, para hacer aplicaciones móviles que se asemejan a aplicaciones nativas.

Entonces surgio la pregunta de si existia PHP, JSP, ASP o algun preprocesador para móviles.

La respuesta que se me vino a la mente fue -es probable pero vamos a googlear haber que encontramos- pero me parece que lo que actualmente explota más PhoneGap es el Javascript con tecnologias como JSON y JQuery, por tanto sería muy interesante encontrar un preprocesador de Javascript que permitiera hacer más sencillas lo mismo que se hace con otros lenguages embebidos en una página web.

Entonces la busqueda cambio a encontrar preprocesadores de Javascript, y como había de suponerse encontre algunos como Cofee, y Jsonverson, pero ninguno se enfocaba a páginas dinamicas para móviles sino más bien a aplicaciones tradicionales con un servidor poderoso en el backend.

Entonces me surgio la idea de crear un preprocesador sencillo por ahora y básico con la aplicación por ahora primaria de acelerar el desarrollo móvil con PhoneGap. Este preprocesador de Javascript lo llame preprocessJS y lo pueden revisar en esta liga PreporcessJS Home.

Es una versión Beta experimental que como cualquier open source busca adeptos , mejoras, releases etc.

Desde luego se esta buscando evitar la obstrucion del mismo JavaScript, pero por ahora como una versión inicial funcional ya puede ayudar en algunos proyectos muy especificos.

Un ejemplo rápido de preprocessJS es el siguiente:

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

La parte que es distinta es

La parte que es distinta es que la página web es procesada por un servidor y enviada a través de internet, lo que recibe el browser es HTML ya listo para consumirse.

Y en este caso se trata de un template engine en javascript.

Imagen de karl

Si es un poco como de metaprogramacion

Aun es experimental y ya tiene un area de oportunidad que son los dispositivos móviles que aun no cuentan con mini servidores que procesen templates ( pensando que este nicho intermedio de hacer applicaciones que simulan ser nativas con tecnología web),
por que inicialmente muchos telefonos móviles inteligentes fueron pensados como "clientes" que se conectarian a los servers, pero con los nuevos procesadores, la nanotecnologia y las memorias que van a ir alcanzando, es probable tambien que el lado del software se desarrollen mini web servers que puedan producir templates en dispositivos móviles. Entonces como en el principio del martillo, no pretendes usar la misma herramienta (la misma tecnología en este caso ) para resolver con ella diferentes requerimientos, quien sabe si más adelante un mini web server incrustado en un movil añadiria valor a algun problema o requerimiento especifico.

Entonces volviendo a la premisa de que Phonegap solamente con su API puede realizar un determinado numero de aplicaciones, entendiendose que para cosas mas sofisticadas es probable que se requiera un lenguage o API mas nativo del movil en cuestion o una muy buena interface, PreprocessorJS ya es una herramienta para el abanico de posibilidades que agiliza el desarrollo con frameworks que usan tecnología web y su API:

El punto de la metaprogramación viene por que si bien es posible realizar una página casi completamente con Javascript, es mas sencillo usar el HTML para el formateo y los estilos que intentar realizar lo mismo con Javascript de elli que en el caso de PreprocessorJS.js la metaprogramación aparece cuando Javascript busca preprocesarse asi mismo para producir markup.

Aun esta el tema de buscar la no obtrsuiion de otros Javascripts y el del performance en dispositivos móviles y tambien en aplicaciones web tradicionales.

Por otro lado esta la posibilidad de por ejemplo intentar hacer algo mixto mezclando en ambientes cliente servidor etiquetas de PHP, JSP; ASP, GSP... con etiquetas de PJS (PreprocessorJS).

Y el tema tambien que da pie a hacer frameworks como CakePHP , Grails o Django pero ahora con clases de Javascript con manejos tipo MVC.

El otro punto es que con un preprocesador del lado del cliente puedes agilizar muchas cosas sin hacer el viaje por internet razón por la cual el web 2.0 cambio mucho la manera inicial de como eran las primeras páginas y aplicaciones web.

Este es el codigo,

Este es el codigo, cierto?

Me parece que estas confundiendo la funcionalidad de un servidor web y un procesador de templates. Al menos no veo como hace match lo que describes con esto. Supongo que habrá a que esperar a que madure.

Saludos.

Imagen de karl

Este es el codigo

Hola ,

Gracias por el comentario, es correcto un servidor web desde luego hace muchas otras cosas que un procesador de templates, me parece que por ejemplo en Apache se pueden usar varios procesadores de templates , yo mas bien hacia enfasis en el preprocesador a la manera que hacia el famoso 'C' con los includes que preprocesan los archivos ".h" y generan codigo C, entonces me parece que es correcto hablar de procesadores de templates en contextos de servidores web, mi duda aqui es si se debe hablar de un processor engine cuando no tienes un web server o seria mas correcto hablar de un preprocesador?

Es decir cuando hablo de mini servidores web, lo veo como un componete que ya incluye algun preprocesador de templates no aisladamente sin ningun preprocesador. A la manera de que si bajas Tomcat puedes usar Servelets para producir contenido Web, pero en la actualidad seria mucho mejor usar JSP o GSP, es decir es mas comun bajarlo para usarlo con algun preprocesador de templates.

Por favor tus comentarios.

Saludos.

Seria preprocesador cuando

Seria preprocesador cuando hace algo antes ( pre ) de procesar. En el caso del de C no genera código, solo hace sustituciones de código existente (incluido por ejemplo en los archivos .h) antes de que el compilador trabaje.

Supongo que template engine seria apropiado, a menos que después quisieras hacer que sirva páginas web después ( como un servidor web).