Javascript Joomla! - ¿corrigiéndolo de la forma adecuada?

Escrito por | 01 Noviembre 2013 | Publicado en Nov. 2013
Hoy, el Gestor de Contenidos Joomla! está implementado mayormente usando PHP donde JavaScript (JS) y CSS contribuyen en menor parte como tecnologías de soporte.  Joomla! utiliza JS principalmente para mejorar la usabilidad proveyendo interacciones más ricas y responsivas, pero está bien hecho?  Podemos mejorarlo?  Cuales son los adelantos tecnológicos relacionados con JS?  Podemos utilizarlos en Joomla!?  Este artículo pretende responder estas preguntas y atraer más atención al mejoramiento del uso de JS en el Gestor de Contenidos Joomla!.

Estado actual del uso de JavaScript

Joomla utiliza JS a través del código del CMS (Gestor de Contenidos) con código hecho a medida, así como en librerías como JQuery y Moo Tools.  JS no sólo está presente en archivos  “.js”, si no también está dentro del código PHP, que da una mirada al mantenimiento.  El uso de librerías JS no es uniforme, y unas librerías son más específicas que genericas para una sección en particular, lo que reduce dramáticamente la reusabilidad de estas librerías.  Muchas de ellas están acopladas de manera muy justo con elementos MOD (Modelo de Objeto de Documento; DOM en inglés), y algunas están incluso adjuntas al MOD inmediatamente cuando este está listo.  Esto se convierte en un problema cuando una simple página está compuesta de diferentes vistas que dependen de estos scripts (escritos de código), donde una sencilla dependencia de script para una particular vista aplica globalmente para todas las vistas.  En Joomla!, las dependencias JS se cargan usando scripts especiales del lado del servidor (ej: JHtml::_('jquery.framework')) y referencia directa a archivos JS que necesitan ser uniformes a lo largo del CMS.  Hay scripts que no tienen uso, scripts conflictivos, y referencias directas, scripts que manejan responsabilidad más allá de su alcance, y más interesante algunos obsoletos que necesitan más atención.  Así que, ¿está hecho de la manera correcta?  La respuesta obvia es NO, y hay mucho espacio disponible para que Joomla! maneje la usabilidad de JS, lo que pasaré a discutir en la secciones siguientes

¿Podemos mejorar?

Una de las mayores preocupaciones es implementar una política en cómo introducir JS al gestor de contenidos y sus componentes.  A pesar que la estructura y las políticas están cuando hablamos de los módulos o componentes del lado del servidor, la misma importancia debería de dársele a JS, ya que este se convertirá en un mayor reto en el manejo de scripts en un futuro cercano.  Otra consideración importante es eliminar el código JS que no se usa más, actualizar librerías obsoletas y remover o archivar librerías JS conflictivas (ej: remover los Moo Tools) del gestor de contenidos.

Actualmente en Joomla!, algunos de los JS se ejecutan globalmente a lo largo de diferentes componentes y vistas, y debería de mejorarse para ampliar su habilidad o de otra forma podría convertirse en algo complejo en su mantenimiento, lo que podría llevar más adelante en conflictos JS.  Mejor aún sería implementar un uso en común para codificar estilos JS para implementaciones JS a medida a lo largo del gestor de contenidos.

Nuevos adelantos tecnológicos 

Con el paso de los últimos años, el uso de JS en la web ha pasado por cambios radicales.  Ya no salen aplicaciones JS pesadas o cargadas, convirtiendo así la experiencia y usabilidad comparable a aplicaciones de escritorio.  Hay marcos de trabajo (frameworks) de JS tales como backbone.js, durandal.js, agular.js, etc. que sienta las bases y una plataforma para desarrollar y administrar el código JS que puede evolucionar a gran escala.  Estas plataformas se basan en diferentes patrones arquitectónicos como MVC, MVVM, MVP y algunos compuestos como híbridos entre estos.  Hay librerías de carga de dependencias populares como require.js, que han introducido mayor alcance y manejo de JS, eliminando la necesidad de dependencias jerárquicas.   Otra área interesante es el uso de uniones direccionales devistas JS de modelos usando MVVM como

patrones (ej: knockout.js como se muestra en el diagrama), lo que reduce dramáticamente el uso de JS necesario para implementar vista de componentes con más estados intermedios comparados con aplicaciones web tradicionales.  Esto influye directamente la mejora en usabilidad y respuesta de aplicaciones web.  Como ya todos sabemos, otro avance es la utilización de características de HTML5 que corren más eficientemente en navegadores modernos.  Comparado con avances modernos en JS, solo tocamos algunos temas de todo el panorama, como una pequeña introducción al tema.

¿Podemos usar esto en Joomla!?

En Joomla!, las librerías como MooTools o JQuery proporcionan parcialmente mantenimiento a código, ya se objetos de clases como MooTools o como plugins (agregados) JQuery, los cuales carecen de un alto nivel de organización.  Para agregar a este problema, Backbone.js o Angular.js como marco de trabajo (framework) pueden usarse como plataformas para organizar y manejar código JS.

  • La imagen a la izquierda muestra como actualmente JS está organizado dentro del CMS (gestor de contenidos) con en línea en vista JS aparte con referencia externa al archivo JS.

  • La imagen de la derecha muestra la posible arquitectura para gestionar código con librerías JS externas reusables y parte de componentes JS (la estructura depende del patrón de arquitectura ej: MVC, MVVM, etc.) los cuales están débilmente acoplados con los componentes actuales. 

Otra posibilidad es delegar la dependencia en manejo de mecanismos desde la “inclusión de mecanismos de scripts del lado del servidor” para JS, los cuales pueden ser fácilmente reemplazados con librerías similares a require.js.  Esto ayuda a reducir la dependencia de código del lado del servidor con JS, lo que puede ser gestionado mejor utilizando JS por sí mismo.  El diagrama a continuación ilustra la diferencia entre estos dos alcances.

Otra mejora mayor es usar un Modelo de Uniones de Vista (Model View Binding), usando un marco de trabajo (framework) como knockout.js, que reduce la cantidad de JS necesario para implementar vistas más interactivas de componentes, así como vistas más sueltas de modelos de JS.  Acá he ignorado a propósito hablar del tema de estilos de Aplicaciones de Una sola Hoja (Single Page Aplication, SPA), ya que Joomla tiene un largo camino para convertirse en un SPA con su arquitectura actual.

Conclusión

Actualmente Joomla! ha ganado más popularidad con sus últimas mejoras, tales como su interfaz de usuario fluida con Bootstrap y el hecho de ser cada vez más robusto.  Pero el actual uso de JS dentro del gestor de contenidos carece de la habilidad de evolucionar, lo que también se ha convertido en una dificultad creciente desde que se requiere mejor codificación.

Basado en todo a lo que esto se refiere, debemos de pensar más en el JS de Joomla! para “corregirlo de la forma adecuada” y hacer mejoras para que JS por sí solo no se convierta en una tecnología disruptiva para Joomla! en un futuro. 

Artículo original: https://magazine.joomla.org/issues/issue-sept-2013/item/1483-joomla-javascript-fix-it-right 

Visto 3543 veces Etiquetado como Spanish, Desarrollador