Ext JS impressions
January 4, 2008 – 6:55 pm Tags: JavaScript, User Interfaces, WidgetsI’ve lately been using Ext JS in a project.
Ext is basically a big JavaScript UI framework - like their site says, “a foundation you can build on”. It comes with various interface widgets like Windows, tabbed panels, accordion panels, menus, toolbars and forms to name some. It also has various other things such as nice Ajax tools.
But what is it good for?
Big and bulky?
The initial impression from the file-size of the library and other things might be that Ext is big and bulky. However, that is not true.
Ext is very fast and works surprisingly well across modern browsers. While I’ve had some bad experiences with specialized UI widgets in some other libraries, Ext does everything very well and has very little to no glitchy behavior, except with some small animation issues which can always be disabled.
The initial load time can be a bit of an issue, though. The uncompressed JavaScript is about 500KB and add 75KB’s of CSS to that plus any graphics it uses… Enabling Gzip compression from the web server for JS and CSS helps a lot, though, and you should always have Gzip enabled anyway.
No JS - no go
While in theory you can have Ext classes applied to an already existing HTML+CSS layout, making a non-JS version is not really in question. I have yet to see a site which uses Ext working fully and providing even a slightly similar user experience if you have disabled JavaScript.
This, combined with the big library size, can and will make it slightly questionable for “traditional” web sites. In my opinion, Ext is just not meant to be used with your typical website, and you will get most out of it in a more specialized application.
Sure, it provides Ajax forms. Sure, it provides some other goodies you might want to have in a website… but so do almost all other libraries and with a much smaller footprint.
Conclusion
I’ve been using Ext in an Opera widget I’m working on. This is something Ext works for very well, since a widget will run outside the browser’s traditional page model anyway. This is where Ext’s Window works, because it looks like a real application and not some weird desktop inside a web page.
I think Ext works the best for “applications” like Webmail, Photo organizing, file management, CMS systems… Anything which a user may need to use more and where speed and usability is important.
Imagine a traditional webmail application such as Horde: slow, many page loads, etc. - I’ve never liked Horde (or any “traditional” webmail) that much. Now, compare that to a real mail application like Outlook or Thunderbird. You could use Ext to make a very similar experience to using Outlook, but in the browser. You could have three column layouts with resizable column sizes, keyboard support etc.
How about a web based file manager? If you have ever used Cpanel or any other management tool, you may have used their file managers. Page loads, slow, annoying… Compare to file managers in operating systems: Dir trees, drag and drop, keyboard shortcuts… Ext? Sure! - On a side note, Cpanel has improved their file manager a lot and in the latest versions it’s actually not that bad.
We’ll look at Ext some more when I get my widget finished.












5 Responses to “Ext JS impressions”
Could you also talk a bit about the differences between Ext, YUI and Script.aculo.us? All those provide animations and AJAX functionality, so it would be interesting to know what benefits one package has over the over.
By Icheb on Jan 4, 2008
Comparing the differences between libraries like that is kind of difficult. Most of them do the same things, and the main differences usually lie on the coding style, how easy they are to use with other libraries and what kind of a feature set they provide, outside the basics.
It’s a good idea nevertheless. I’ll keep it in mind
By Jani Hartikainen on Jan 4, 2008
EXTJSRuls
By mahe on Jan 11, 2008
Not everyone can include the full ext-all.js file on their site. This tool will allow you to build your own custom ext.js with just the things you need.
you can make smaller ext.js with this:
http://www.extjs.com/products/extjs/build/
By Mohsen Moayed on May 24, 2008