Sobre jQuery 1.4 y futuras versiones

jQuery 1.4

En la conferencia anual de jQuery para este año se presentaron interesantes cambios de esta librería de JavaScript ante una audiencia de 300 personas aproximadamente. Tomando en cuenta el primero discurso presentando por el orador John Resig, miembro de jQuery Core intitulado “Recent Changes to jQuery’s Internals” (Cambios Recientes en jQuery), estaré resaltando los cambios que comenzaremos a ver en la próxima distribución que será la versión 1.3.3 o 1.4 (aún no se ha decidido cual versión estable será la siguiente por la gran cantidad de cambios que veremos). Miren los importantes y nuevos cambios:

  • No más detección de navegador.
    Desde la versión 1.3.2 hemos visto la aparición de jQuery.support que reemplazará lo que algunos de nosotros solemos utilizar: jQuery.browser. jQuery.support es una adición reciente que prueba el soporte de diferentes funcionalidades para el navegador en cuestión.
  • jQuery será modularizado.
    Se anunció que para la versión 1.3.3/1.4 jQuery será dividido en diferentes módulos según sus funcionalidades. Esto significa que el core de jQuery (jquery.js) será dividido en varias archivos como: core.js, attributes.js, css.js, manipulation.js y traversing.js.
  • jQuery para móviles.
    El equipo de desarrollo está experimentando con una versión de jQuery para móviles. Está incluirá la inclusión de módulos remotos, funciones búsqueda entre otras cosas que aún no han revelado.
  • Soporte para ECMAScript 5.
    En la próxima versión de jQuery, ésta aprovechará algunas de las funcionalidades de ECMAScript como el uso del nuevo objeto de expresiones regulares y la conversión nativa de datos JSON a ‘objetos JavaScript’.
  • Discriminadores de funciones y arreglos.
    En la última versión hemos visto el métodos jQuery.isFunction que nos permite determinar si el objeto es una función, de igual manera funcional y de implementación se agregó el método jQuery.isArray para determinar si un objeto es un arreglo.
  • Unificación de jQuery(…).
    Para la próxima versión ya no habrán más discrepancias con jQuery(null), jQuery(false) y jQuery(undefined). Todos serán idénticos a jQuery([]).
  • Optimizaciones en selectores por TAGs.
    En versiones actuales seleccionar un tag, por ejemplo: o jQuery(“div”) recorría la implementación interna de Sizzle (el selector interno de jQuery). En cambio ahora, los selectores de un tag en particular serán optimizados utilizando una alternativa a Sizzle reduciendo así el tiempo de búsqueda. Esto será válido para todos los TAGs salvo BODY, ya que jQuery(“body”) será un atajo para jQuery(document.body).
  • Nuevos métodos “atajos”.
    Ahora veremos que para acceder al primer elemento de un arreglo de jQuery podremos utilizar los métodos first() y last() que corresponde a get(0) y get(-1) respectivamente.
  • Mejoras en manipulaciones de HTML.
    El métodos append() que sirve para agregar código HTML al final del objeto seleccionado, ha sido modificado para que acepte como argumento una función. Eso permitirá ejecutar una función sobre el o los objetos seleccionado por el selector. Por ejemplo, actualmente hacemos:

    $('li').each(function() {
      $(this).append("My id: " + this.id);
    })

    Ahora obtendremos los mismos resultados de esta manera

    $('li').append(function() {
      return "My id: " + this.id;
    })
  • Nuevas funciones.
    .detach() será parecido a .remove() a diferencia que los eventos y la data quedarán intactos.
    .closest(tag) chequeará si el selector es igual al tag, de no ser así se buscará el parentezco más cercano igual al tag.
    .index() devuelve el índice del objeto seleccionado respecto a sus ‘primos’ (siblings).

Desde mi punto vista, hay muchos nuevas características y optimizaciones para la librería de jQuery. Algunas de éstas que he citado previamente me hacen pensar en algunas cosas que podrían aparecer más adelante (al menos que no hayan empezado ya). Ver que la librería no será ya un solo archivo sino una serie de módulos me hace pensar que pronto veremos como un manejador de dependencias, algo al estilo Dojo con su dojo.require(…). No sé que tan factible sería un manejador de dependencias al estilo Maven, pero implementado para jQuery. Tal vez, tomando a plugins.jquery.com como un repositorio donde estarán todas las ‘dependencias’ (los módulos de jQuery, jQueryUI, plugins etc…).

Y tu, ¿qué opinas de estas novedades?

Deja un comentario

*
*