Why MooTools (or Why not JQuery)
Iâve been toying around with MooTools a bit lately, and Iâve found the experience quite enjoyable and refreshing. Naturally, I twittered about it and went along my merry way. Moments later (and much to my surprise), I had a direct message from John Resig himself asking âWhy, whatâs wrong with jQuery?â. I was pretty taken aback that he would take time from his surely busy day to message a total stranger in an effort to improve his project or at least gain an insight in the everyday life of a js developer (itâs not like DHH would personally message people that are dumping rails to use merb). I figured he deserved a straight, honest answer; One that at least would be longer than 140 characters (even though I managed to use every single one). So it begs the question, Why MooTools?
Class support. JQueryâs SQL-like syntax is fine for quick and dirty javascripting, but eventually youâll want real classes to structure your UI logic.
It smells, feels and tastes like regular javascript. JQuery doesnât even look like javascript, which isnât necessarily a bad thing, since thatâs kind of their goal. MooTools however, feels like just an extension of the language
Faster. âNuff Said EDIT: This was pointed out to be false; It is only faster in certain cases (such as mine, WebKit nightly on OS X).
Robert Pennerâs easing equations baked right in.This could just be me, but I find the animations that mootools creates are alot smoother than JQueryâs (especially the easing).
Creating new DOM elements is a snap.Need to create a dom element?Â
var el = new Element(âaâ, { âhrefâ: âjuliocapote.comâ});
Done.Modular. I like that I can just build and pull down a moo.js that only contains the functionality I need.
Better Documented.Or at least, its faster to find what you need.
Easier to hack on and extend. While I havenât personally delved into the internals of either system, the consensus seems to be that jquery is an unintelligible mess when it comes to modifying how it works.
Prototype Approach (versus a namespaced approach) This is really just matter of preference; MooTools achieves itâs magic by just extending the prototypes of common objects (Array, String, etc); While this is obstrusive, it makes for shorter, more natural code. JQuery does its thing via a main object (which you can name, hence the namespace), that you wrap around whatever you want to make magical; This is unobstrusive, but you pay for that by having to wrap anything you want to use (which ends up being everything). It basically boils down to arr.each(fn) vs $.each(arr, fn)
Itâs not a revolution. It feels as if JQuery is trying to take on the world (it seems like it too, since its now included with visual studio and the nokia sdk). However, Iâm not; Iâm just trying to write some javascript here.
Itâs not like Iâm never going to use JQuery again; It simply isnât my default js framework any longer.