One of Kauri's goals is not to reinvent the wheel until necessary. A modern web application framework these days needs a JavaScript library to provide common, reusable functionality and save us from writing lots of repetitive code. Libraries also provide a layer of abstraction, thus hiding browser differences.
We do not want to write one ourselves because it saves time to use an existing one, plus these libraries are more likely to contain fewer bugs because of the significant user base.
Because of the multitude of Javascript libraries, we started our search by selecting only the most-used, most-popular and up-to-date Ajax-enabled libraries.
|
|
Latest (non-beta) release |
Size |
the good |
the bad |
Licence |
Browser compatibility |
|---|---|---|---|---|---|---|
| Dojo |
1.0.2 (12/15/07) |
50kb+ |
|
|
modified BSD or Academic Free 2.1 |
Safari 3.0.x |
| Prototype |
1.6.0.2 (01/25/08) |
~120kb |
|
MIT |
IE 6.0+ |
|
|
1.2.3 (02/08/08) |
~29kb |
|
|
MIT or GPL |
FF1.5+ |
|
| Ext JS |
2.0.1 (01/23/08) |
500kb |
|
LGPL 3.0 |
IE 6+ |
|
| Yahoo UI Library
|
2.4.1 (12/19/07) |
29kb+ |
|
|
BSD |
IE 6+ |
| MooTools |
1.1 (05/07/07) |
9kb+ |
|
|
MIT |
IE 6+ |
| qooxdoo |
0.7.3 (01/14/08) |
|
|
LGPL or EPL |
IE 5.5+ |
|
|
1.4.61 (11/03/07) |
|
Apache 2.0 |
IE |
The pros and cons are (possibly biased) opinions collected from blogs and fora, or features promoted on the homepages.
Disqualified:
The qooxdoo framework didn't have enough search volume to show up on the graph.
|
Custom event-binding |
OO |
namespaced API |
Namespacing |
Chaining |
Modular |
|
|---|---|---|---|---|---|---|
|
Prototype |
|
|||||
|
Dojo |
|
|
||||
|
jQuery |
|
|
||||
|
MooTools |
|
|
|
|||
|
ExtJS |
|
|
||||
|
qooxdoo |
|
|||||
|
YUI |
|
|
There are arguments why a js framework should not try to be an OO programming language (see *,* and *).
All libraries contain specialized methods for Ajax calls, with support for GET and POST requests, parameters and callback functions. IFrame I/O is mostly used for file upload.
|
XHR API |
custom HTTP request headers |
Callback |
Error handling |
Cross-site scripting |
IFrame IO |
Synchronous |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
| jQuery |
|
|
|
|
|
|
| MooTools |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
||
| YUI |
|
|
|
|
GWT + ExtJS: gwt-ext,
MyGWT
GWT + Dojo: Tatami
GWT + Script.aculo.us:
Script.aculo.us
integration
Java + qooxdoo: QWT
JavaScript Native Interface (JSNI)
Simile Timeline and Timeplot are based on jQuery 1.2.1, which could cause conflicts.
Standalone js unit test tools:
jQuery:
Writing
your own plugins
Dojo: Creating new Dojo Widget,
Dojo
Custom Widget Tutorial,
Create
a Custom Javascript/AJAX Widget with Dojo
ExtJS: Writing
Ext 2 Plugins
Dojo, MooTools, jQuery, prototype: Creating an AJAX Rating Widget
The JS framework we'll use and support in Kauri will be jQuery.