Why I’m moving from jQuery to ExtJs

Update (21 Nov 2008): I changed my mind a few months later. This week, I’ve switched favorite Javascript frameworks. I was a heavy jQuery user, and still think that the framework is very nice. As part of a discussion on the Satchmo-Developers list about what Javascript framework to use as the default for the Satchmo web shop framework, I ended up doing a survey of the best ones available. This is highly debatable, of course. In the end, I simply ended up trying to optimize my based on these desires.

It should be nice to the global namespace. I dislike frameworks that pollute the air with all kinds of function names.

It should be fast.

It should have nice, easy to use effects.

It should have extremely capable DOM manipulation.

It should have great CSS selectors.

It should have a good window.onLoad mechanism.

It should not modify the base language. Prototype is right out! I really really hate that.

It should be terse. I do not like wordy frameworks as a matter of style & taste.

I then made a web page, loaded each of these in, and tried out various DOM manipulations and effects using the FireBug console. This was a fair way to do it, because it is how I prefer to explore a new framework. I like good docs, of course, but I also like being able to exercise the framework in an intuitive manner. My results, in very short nutshell descriptions:

jQuery

Intuitive, easy to use, fast, great DOM manipulation, good effects. Great window.onLoad handler. Give it an A- grade.

ExtJs

Intuitive, very very extensive, great DOM manipulation, solid effects. The fastest to get things done when puzzling out on the commandline. Give it an A.

Mochikit

Very terse, much more “functional” in approach rather than class-oriented. Not good about polluting the global namespace. Yes, this is runtime-optional, but the alternative is very wordy. The functional approach (i.e. map(set, func) rather than $(selector).each(func)) is a bit off-putting actually. It makes it much harder to know what functions are appropriate to use with what objects. Give it a score of B+ due to my highly subjective sense of style.

Dojo

Too wordy. I dislike their framework for building widgets. I love their inclusion mechanism, but dislike that the reason for it is that Dojo is so huge. Give it a C.

The winner: ExtJs

In the end, I went with ExtJs. I am happily converting my existing code to use the framework, and encountering little resistance. It is a very easy conversion. I’ll still use jQuery for deployed clients, but all my new library code is going to be Ext based.