Sobre LitGirl

LitGirl es un Mini-Framework ligero que también puede comportarse como una librería cuyo core está escrito en JavaScript. Incluye un motor de plantillas, un compilador que permite interpretar instrucciones programáticas dentro del código HTML, módulos JavaScript u otras variantes de texto plano, siguiendo las reglas del pseudo-lenguaje embebido Dynamo. Su foco principal es la facilidad de uso y la velocidad de ejecución.

Visión general (Nota de la autora)

LitGirl surgió mientras desarrollaba una aplicación embebida para Ohyoo .

El desarrollo implicaba la carga dinámica de múltiples secciones y la renderización de diferentes sets de datos dependiendo de las acciones de los usuarios, trabajando en una ambiente muy restrictivo. En principio, consideré las posibilidades más obvias: utilizar alguno de los motores de plantillas o librerías más populares ya disponible en el mercado. Sin embargo, no terminaban de adaptarse exactamente a lo que buscaba lograr. Unas agregaban demasiado peso extra, otras eran desproporcionadas para la tarea o sus procesos consumían demasiados recursos, en mi opinión personal, innecesariamente para mantener el rendimiento. Además de tener, en algunos casos, una curva de aprendizaje algo empinada, lo que en definitiva me obligaba a consumir tiempo en conocer su funcionamiento. ¡Si quería tener una mínima seguridad de que harían lo que se esperaba sin sorpresas!

¿Solución? Desarrollar una herramienta propia con cuatro características fundamentales en mente: sencilla de utilizar, liviana, veloz y versátil. Con estas características en mente nació LitGirl. Inicialmente, se trataba de una librería con menos de sesenta líneas de código, incluyendo el motor de plantillas Lit y el compilador para un sistema de instrucciones o comandos, que dieron origen al lenguaje Dynamo. Y luego... bueno, me enamoré del proyecto y como pasa siempre que nos apasionamos con algo, las ideas (probablemente alocadas o ingenuas) de lo que podría llegar a ser y hacer, no pararon de llegar. Siempre tomando en cuenta los fundamentos en que se basó el desarrollo original. En este momento LitGirl es un poquito más grande, pero aún se mantiene fiel al principo rector desde su inicio. Ser Rápido y Simple en cualquier contexto.

LitGirl es sencillo

La simplicidad, tanto en la integración como en el aprendizaje de las reglas de uso es fundamental para la productividad. El compromiso es, sostener el esfuerzo por mantener las cosas sencillas, con una curva de aprendizaje mínima. Sin que por ello se limiten las posibilidades de realizar desarrollos potentes. Lo más básico se resuelve con dos funciones y en cuanto a la sintaxis de Dynamo, se puede dominar en un par de horas...literalmente.

LitGirl es muy liviano

Lograr la ecuació perfecta entre potencia y mínimo peso es siempre un desafío enorme. A pesar de ello, estoy feliz con el equilibrio que se ha logrado mantener hasta esta etapa muy temprana del desarrollo. Comparativamente, LitGirl pesa entre la sexta y la décima parte que otros desarrollos con algunas características similares. Y con la ventaja de que la comparativa la realizamos sobre el prototipo Alfa de Lit, sin ningún tipo de refactorización, minificación o compresión, frente a proyectos que si se encuentran plenamente optimizados. A pesar de que aún quedan errores por solucionar, esto no conllevará un aumento de su peso.

LitGirl es veloz

Entregar el contenido rápidamente a los visitantes es una necesidad ineludible en cualquier aplicación para fidelizar a los usuarios. Además de beneficiar el SEO de nuestras páginas web y favorecer su indexación por parte de los motores de búsqueda. Es por ello que en el desarrollo y mantenimiento de LitGirl la velocidad de procesamiento es casi obsesiva. Actualmente, a pesar de no contar con todas las pruebas en todos los escenarios posibles, los tests realizados han demostrado que realmente es muy veloz. En todas las pruebas realizadas el tiempo de procesamiento a sido menor a los 100 milisegundos. Y solamente se acercó a este límite en casos donde el compilador ha recibido datos de entrada plagados de errores, malformaciones, y en un entorno de ejecución extremadamente hostil. En condiciones más normales, nunca superó los 10 milisegundos para procesar archivos bastante grandes y con múltiples instrucciones.

Para entender mejor cómo procesa las instrucciones y maneja los errores el compilador de Dynamo, puedes leer la documentación sobre Estructuras de Control. En algunas secciones de dicho capítulo se menciona el tema.

LitGirl es versátil

Cuando comencé a desarrollar LitGirl, la idea era crear un módulo o una clase que realizara un trabajo similar al de un motor de plantillas tradicional. Pero a medida que avanzaba y cubrí las necesidades específicas que motivaron inicialmente el proyecto, caí en la cuenta de las enormes posibilidades que ofrecía para intentar llevarlo a otro nivel. Agregué algunas funciones de preprocesamiento y compilación extras aumentando su alcance. Así como dar forma a un pseudo-lenguaje que puediera ser interpretado por dicho compilador extendiendo la sintaxis original. Ese pseudo-lenguaje es Dynamo. La diferencia esencial con otros proyectos es que la adaptabilidad que puede llegar a ofrecer LitGirl nos hace tener la sensación de que estamos realmente "programando" en, por ejemplo, un documento HTML.Y lógicaente también puede compilar código proveniente de objetos JavaScript y archivos de texto plano, entre otros.

Mmm...¿y la seguridad?

Desde que existe la programación del lado cliente hay un debate instalado sobre la mejor forma y las mejores prácticas a utilizar en un entorno tan expuesto como es el frontend de una aplicación. El core de la versión Alfa 0.0.1 de LitGirl está íntegramente desarrollado en JavaScript, por lo cual, como primera medida de seguridad se toman las recomendaciones de buenas prácticas que siguen las empresas referentes de la industria con respecto a este lenguaje. Sin embargo, por las características de LitGirl, existen otras consideraciones que he tenido en cuenta, ya que de no hacerlo podía terminar ocasionando vectores de ataque adicionales. LitGirl a través de Dynamo, permite la declaración y ejecución de instrucciones de código potencialmente peligrosas si no son tratadas correctamente. Para solventar este riesgo, LitGirl antes de compilarlas las parsea en un sandbox. En realidad lo que entrega para la compilación, es algo muy distinto a lo que recibe originalmente. Al preprocesar el contenido a ejecutar y renderizar , usando correctamente las buenas prácticas que encuentran en las Recomendaciones , la seguridad no es un problema más allá de lo que es normal en cualquier aplicación moderna.

* Recuerda que no existe sistema alguno, por mucho dinero o recursos humanos que se inviertan en él, totalmente invulnerable a un ataque debidamente preparado y correctamente dirigido.

¿Cómo trabaja LitGirl?

* Este apartado hace referencia a la versión actual Alfa 0.0.1 y seguramente algunos aspectos cambiarán en futuras versiones.
LitGirl trabaja como un módulo JavaScript que se importa de la forma tradicional en el documento o template donde va a ser utilizado desde el directorio "litgirl" que por defecto viene configurado para estar ubicado en la raíz del sitio web. Puedes visitar la documentación sobre como Empezar con LitGirl para obtener más detalles. Adicionalmente en la instalación se provee un archivo de exportación con algunos ejemplos que permite ofrecer una menor exposición al core de la aplicación. Además, dentro del directorio root de LitGirl se incluyen tres directorios adicionales que permiten crear una estructura sencilla para los archivos y componentes que estará compilando. Esto es opcional y puedes eliminarlos en caso de no desear seguir este patrón, únicamente el directorio "core" es obligatorio.

Stack de tecnologías

La simplicidad de LitGirl también se refleja en el stack tecnológico utilizado en su desarrollo.

  • - JavaScript Motor de renderizado y compilador.
  • - HTML Declaración de sentencias Dynamo y variables de transpilación.
  • - JSON Consulta de datos.
  • - *CSS3 Próximamente transpilador y compilador.

Contacto

¿Tienes preguntas? Escríbenos a dev.litgirl@ohyoo.net

LitGirl © Equipo de Desarrollo - All rights reserved.

Powered by:

Logo Ohyoo