Contenido

Avalancha de Frameworks ¿Con cual nos quedamos?

10 Abr

+ 16

Cuando trabajamos con Javascript nos encontramos que por culpa de las diferencias entre los diferentes navegadores, tenemos que condicionar nuestro código dependiendo de estas diferencias. Para ello, y por la comodidad y claridad que aportan al código, los frameworks javascript llegan, y en masa, para hacer felices y fáciles las horas que dedicamos a este lenguaje.

Personalmente siempre que puedo, los evito. Por lo menos para hacerlo yo, aunque sea solo una vez, pero la comodidad de uso y la seguridad de que va a funcionar en la mayoría de casos, engancha.

Por eso, si estamos pensando en usar uno de ellos para nuestras aplicaciones, debemos conocer las posibles alternativas de las que podemos hacer uso.

1. Prototype (http://www.prototypejs.org/)

Pese a ser la más usada, es la que menos conozco de las más conocidas. Famosa por su peso y la integración con script.aculo.us. Muchisima documentación.

Ejemplo

//Nuevo elemento
var a = new Element('a', { 'class': 'foo', href: '/foo.html' }).update("Next page");
//Ajax
new Ajax.Request('/some_url',
{
method:'get',
onSuccess: function(transport){
var response = transport.responseText || "no response text";
alert("Success! \n\n" + response);
},
onFailure: function(){ alert('Something went wrong...') }
});

Documentación / Descargar

2. MooTools (http://mootools.net/)

El primer framework que me enamoró, sin duda llegué atraido por la vistosidad de Moo.fx. Destinada principalmente para complementar el diseño de las aplicaciones web, con una gran cantidad de efectos. Todo ello sin descuidar las funcionalidades del día a día. Importante tener en cuenta la nueva versión 1.2 que será completamente diferente.

Ejemplos

// Crear un elemento
new Element('a', {
'styles': {
'display': 'block',
'border': '1px solid black'
},
'events': {
'click': function(){
//aaa
},
'mousedown': function(){
//aaa
}
},
'class': 'myClassSuperClass',
'href': 'http://mad4milk.net'
});
//Ajax
var myAjax = new Ajax(url, {method: 'get});
myAjax.request();

Documentación / Descargar

3. jQuery (http://jquery.com/)

Mi nuevo amor, hace cosa de un mes, que en los ratos libres voy migrando heySilver a jQuery. Intentando aprender los grandes y mejorando el código semana a semana. Sin lugar a dudas he descubierto que pese a no disponer de muchos efectos ni transiciones, dispone de todo lo necesario para hacer lo más fácil posible el trabajo diario.  La posibilidad de usar xPath y Selectores CSS para encontrar elementos de nuestro HTML es simplemente una maravilla.

// Nuevo elemento
$("#elemento span").append('<p class="clase"><a href="...">Enlace</a></p>');
// Ajax
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});

Documentación / Descargar

4. MochiKit (http://www.mochikit.com/)

Nunca he tenido la oportunidad de meterle mano, quizas ha sido por falta de tiempo, quizas por falta de interes o quizas la poca claridad del código, pero si revisamos la documentación nos damos cuenta de que no es un framework que podamos desechar sin por lo menos dedicarle un par de semanas.

//Nuevo elemento
P({"class" : "clase"});
//Ajax
var url = "/src/b/bo/bob/MochiKit.Async/META.json";
var d = loadJSONDoc(url);
var gotMetadata = function (meta) {
if (MochiKit.Async.VERSION == meta.version) {
alert("You have the newest MochiKit.Async!");
} else {
alert("MochiKit.Async "
+ meta.version
+ " is available, upgrade!");
}
};
var metadataFetchFailed = function (err) {
alert("The metadata for MochiKit.Async could not be fetched :(");
};
d.addCallbacks(gotMetadata, metadataFetchFailed);

Documentación / Descargar

5. Script.aculo.us (http://script.aculo.us/)

Aunque técnicamente es un complemento de prototype, ya que sin él no funciona, es posiblemente más famoso que el propio Prototype. Con él todos los efectos, transiciones y transformaciones son mas fáciles desde que script. aculo.us apareció.

//Nuevo elemento
element = Builder.node('p',{className:'error'},'An error has occurred');
// Ajax
new Ajax.Request('/foo/bar', {method:'post', postBody:escape('thisvar=true&thatvar=Howdy')});

6. Rialto (http://rialto.improve-technologies.com/wiki/)

Otra gran desconocida de este mundillo de líneas de código, pese a no estar compuesta de una gran cantidad de funcionalidades diarias, está cargado de widgets de fácil instalación que merece la pena ver.


//Nuevo Elemento (Combo)
var comb = new rialto.widget.Combo([["value1","text1"],["value2","text2"],["value3","text3"]],"MyComb",5,10,100,CADRE2,{position:"absolute",heightItem:25,suggest:false,enable:true});
//Ajax
var remote=new rialto.io.AjaxRequest({
url:'rialtoModel.xml',
method: 'get',
callBackObjectOnSuccess:this,
withWaitWindow:false,
onSuccess: this.parseXmlForListValue
}) ;

Documentación / Descargar

7. Dojo (http://dojotoolkit.org/)

Documentación / Descargar

8. Spry Framework (http://labs.adobe.com/technologies/spry/)

Documentación / Descargar

9. ASP.NET Ajax Framework (http://asp.net/ajax/)

Documentación / Descargar

10. Clean Ajax (http://sourceforge.net/projects/clean-ajax/)

Documentación / Descargar

11. YUI (http://developer.yahoo.com/yui/)

Documentación / Descargar

12. Ext (http://extjs.com/)

Documentación / Descargar

13. Base2 (http://code.google.com/p/base2/)

Documentación / Descargar

14. DOMAssistant (http://domassistant.com/)

Documentación / Descargar

Muchos, pero muchos más.

  • Felicitaciones por el blog, y tienes razón últimamente nos ha caído una lluvia de frameworks para facilitarnos la existencia en lo referente a javascript.

    Personalmente he tenido la oportunidad de trabajar con Script.aculo.us, prototype, jQuery (Este es muy recomendable) y últimamente encontré a ExtJS y este si que me sorprendió por la gran cantidad de opciones que te brinda para construir tus aplicaciones web, su punto en contra sería que es considerablemente pesado.

  • yo empecé con el JQuery, y ahora estuve viendo un poco de MooTools ya que tu le has hecho bastantes referencias… pero me quedo con el primero…
    Prototype? hasta hace unos dias no lo conocia… y por ahora prefiero no cambiar ni probar, sino despues no voy a saber con cual quedarme! jaja

  • Yo nunca he usado ninguno, siempre preferí crear mis propias funciones por el tema de tamaño de los archivos pero hay que reconocer que al final es lo mejor porque eliminan un montón de incompatibilidades que uno no conoce.

  • Estoy contigo, jQuery y sus selectores… es una delicia. Simplifica mucho y desde luego le doy más importancia a las capacidades técnicas que a los efectos.

  • Yo he usado (y uso) jQuery. Me encanta. Me parece sencillisima de usar, muchos plugins, pequeñita, en fin todo lo que necesito. Pero viendo lo visto creo que nada llega a la suela del zapato a extjs. Estoy estudiandolo ahora y estoy impresionado. No solo por el resultado final (que es impresionante), sino por lo bien que esta hecha. Mi voto para extjs

  • En mis tiempos de programador front usaba jQuery. Sin duda me quedaría con él. Probé otros, entre ellos Mootools, y ninguno me convenció como lo hace este gran framework.

  • Una duda que me surge con todo esto, hace poco que estoy con estos frameworks js.

    Estoy usando JQuery, pero por ejemplo a veces uno quiere usar un efecto o algo que usa otra librería… y entonces veo que es necesario incorporar varios frameworks… cosa que no me parece muy optima.

    ¿Estoy en lo cierto?

    Quizas convenga usar siempre uno y buscar el efecto que uno necesita para ese framework en uso.

  • Creo que te has dejado uno de los mejores: DWR 😉

  • Bueno, ¿y sobre frameworks para trabajar con PHP? Sería interesante un artículo al respecto (si no se ha publicado ya).

  • Soy el único que cree que Prototype es la referencia?

  • Yo he probado Prototype y script.aculo.us. Me parecio sencillo y muy practico. En estos momentos estoy probando ExtJS que es muy robusto pero coincido con IdealTPP en que es considerablemente pesado.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.