Comparison of JavaScript-based web frameworks
Appearance
There are many JavaScript frameworks available. The intention of this comparison is to show some examples of notable JavaScript frameworks.
Comparison of JavaScript frameworks
AngularJS | CupQ | DHTMLX | Dojo | Ext JS | Google Web Toolkit | jQuery | midori | MochiKit | MooTools | PhoneJS | Prototype & script. aculo.us[1] | Pyjamas | Rico | SmartClient & SmartGWT | Wakanda | YUI | ZK | Webix | Web Atoms JS | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Version compared | 3.0 September 2013 |
0.9.3 1 Jul 2010 |
1.2.4 6 Dec 2013 |
0.2 June 2012 |
3.6 18 Apr 2013 |
1.9.2 6 Dec 2013 |
3.0.rc1 24 Mar 2011 |
2.0.1 30 August 2012 |
4.2 13 Mar 2013 |
2.4 September 2011 |
1.9.1 4 Feb 2013 |
2010.05 10 May 2010 |
1.4.2 17 Nov 2008 |
1.4.5 26 February 2012 |
13.1.4 6 June 2013 |
Prototype: 1.7.1 8 Aug 2012 script.aculo.us: 1.9.0 23 Dec 2010 |
0.5 Mar 2009 |
3.5 10 Dec 2013 |
1.1.5 25 Feb 2011 |
2.0 3 May 2009 |
SmartClient: 9.0 Jul 2013 SmartGWT: 4.0 Jul 2013 |
3 19 Dec 2012 |
3.10.0 23 Apr 2013 |
6.5.1.1 13 Dec 2012 / 12 September 2012; |
1 11 July 2013 |
1.0.8 1 August 2013 |
Size | Variable. Core size: 40 kB (minified & gzipped) |
36 kB (minified & compressed) | 20 kB (minified) | Variable | Variable. Base size: 41 kB (minified & gzipped), 155 kB (minified), 598 kB (uncompressed)[2] |
<25 kB (core gzipped) | 84–502 kB | Variable | 32 KiB (minified & gzipped), 93 KiB (minified), 252 KiB (uncompressed) |
9 kB (minified & gzipped), 50 kB (uncompressed) |
32–200 kB | Variable; 7.3–65 KiB (YUI Compressor),[3] 101 KiB (uncompressed)[4] |
236 kB | 46–278 kB | Variable | Variable, starting at 6 kB (gzipped) | 520 kB | 100–500 kb (gzipped). | Variable | Variable; library core is 31 kB | Variable | 110kB(gzipped) | 44kB(gzipped) | |||
License | MIT License | MIT & GPL | MIT | MIT | GPL and Commercial | BSD & AFL | MPL, LGPL or GPL | Apache 2 [13] | GPL and Commercial | Apache | MIT | MIT | MIT & AFL | MIT | DEVEXPRESS EULA | MIT | Apache 2 & GPL | LGPL & EPL | Apache | Apache | LGPL & Commercial | GPL & Commercial | BSD | LGPL & GPL & ZOL | GPL & Commercial | Commercial |
Source language | JavaScript | ? | JavaScript | JavaScript | JavaScript | JavaScript + HTML | JavaScript and/or Java | JavaScript | JavaScript | Java | JavaScript | ? | ? | JavaScript | JavaScript + HTML5 + CSS3 | JavaScript | Python | JavaScript | ? | ? | Server: Java Client: Java (Smart GWT) or Javascript (SmartClient) or XML (both) |
Javascript + HTML + CSS | Javascript + HTML + CSS | XML + Java (Javascript Optional) | JavaScript | JavaScript |
Features | ||||||||||||||||||||||||||
AccDC | Ample SDK | AngularJS | CupQ | DHTMLX | Dojo | Echo3 | Enyo | Ext JS | Google Web Toolkit | jQuery | midori | MochiKit | MooTools | PhoneJS | Prototype & script. aculo.us[1] | Pyjamas | qooxdoo | Rialto Toolkit | Rico | SmartClient and SmartGWT | Wakanda | YUI | ZK | Webix | Web Atoms JS | |
Feature detection[5] | Yes | No[6] | Yes | Yes[7] | No | Yes[8] | No | No | No[9][10] | Yes[11] | No[12] | No[13] | Yes[14] | Yes | No[15] | Yes | No[16] | No | Partial [17] | Partial | Yes | No[18] | Yes | Yes | ||
DOM wrapped[19] | Yes | Yes[20] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No[21] | Yes | No[22][23] | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes |
XMLHttpRequest data retrieval |
Yes | Yes | Yes | No | Yes | Yes[24] | Yes | Yes | Yes | Yes | Yes | Yes | Yes[25] | Yes | Yes | Yes | Yes | No | Yes[26] | Yes | Yes | Yes | Yes | Yes | ||
[WebSocket] | Yes | Yes | No | Yes | Yes[27] | Yes | Yes | Yes | Yes | Yes | Yes | Yes[28] | Yes | Yes | Yes | Yes | No | Yes[29] | Yes | Yes | Yes | Yes | Yes | |||
Server push data retrieval | Yes | Yes[30] | Yes[31] | Yes[32] | Yes[33] | Yes | Yes[34] | Via Plugin | Yes[35] | |||||||||||||||||
Other data retrieval | Yes: XML, HTML | Yes: XML | Yes: XML, CSV, HTML | Yes: XML, HTML, CSV, ATOM[36] | Yes: XML | Yes: RPC, RequestFactory | Yes: XML, HTML | Yes: XML, HTML | Yes: XML, HTML, OData, REST | Yes: XML, WSDL, RSS, and Java-based SQL, Hibernate, POJO adapters | Yes: JSON-RPC, Wakanda REST | Yes | Yes: XML, HTML,CSV | Yes: XML, HTML,CSV | ||||||||||||
Drag and drop | Yes: With keyboard accessibility | Yes | No | Yes | Yes[37] | Yes | Yes | With plugin[38] | Yes | Yes | Yes | Yes[39] | Yes | Yes | Depends | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |||
Simple visual effects | Yes | Yes | Yes | No | Yes | Yes[40] | Yes | Yes | Yes | Yes | Yes | Yes | Yes[41] | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
Animation / advanced visual effects |
Yes | Yes | No | No | Yes[42] | Yes | Yes[43] | Yes | Yes | Yes | Yes | Yes[44] | Yes[45] | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | |||
Event handling | Yes | Yes[46] | Yes | Yes | Yes | Yes[47] | Yes | Yes | Yes | Yes | Yes | Yes | Yes[48] | Yes | Yes | Yes[49] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
Back button support / history management |
Yes | No | No | Yes[50] | Yes[51] | Yes | With plugins[52] | Yes | With plugin[53] | Yes | Yes | Yes[54] | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | ||||||
Input form widgets & validation | Yes | Yes | Yes | No | Yes[55] | Yes[56] | Yes | Yes | Yes | Yes, Validation requires plugin[57] | With plugins[58] | Yes | Yes | Yes | Yes | Yes[54] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
AccDC | Ample SDK | AngularJS | CupQ | DHTMLX | Dojo | Echo3 | Enyo | ExtJS | Google Web Toolkit | jQuery | midori | MochiKit | MooTools | PhoneJS | Prototype & script. aculo.us[1] | Pyjamas | qooxdoo | Rialto Toolkit | Rico | SmartClient and SmartGWT | Wakanda | YUI | ZK | Webix | Web Atoms JS | |
Grid | Yes[59] | Yes[60] | No | Yes[61] | Yes[62] | Yes | Yes | Yes | With plugins[63] | No | With plugin[64] | With plugins | Yes | Yes | Yes | Yes[65] | Yes | Yes[66] | Yes[67] | Yes | Yes | Template | ||||
Hierarchical Tree | Yes | Yes[68] | Yes | Yes[69] | Yes[70] | Yes[71] | Yes[72] | Yes | With plugins[73] | No | With plugins[74] | No | Yes[75] | Yes[76] | Yes | Yes | Yes (Auto Form)[77] | Yes[78] | Yes | Yes | Yes | |||||
Rich text editor | Yes[79] | No | No | Yes[80] | Yes[81] | Yes[82] | Yes[83] | Yes | With plugins[84] | No | Yes[85] | No | Yes | Yes | No | No | Yes | Yes[86] | Yes | Yes | With plugins | Yes | ||||
Autocompletion tools | No | No | Yes[87] | Yes[88] | Yes | Yes | With plugins[89] | Yes | With plugin[90] | Yes | Yes | Yes | Yes | Yes | Yes | Yes[91] | Yes | Yes | Yes | Yes | ||||||
HTML generation tools | Yes | Yes | No | Yes | Yes | Yes[92] | Yes | Yes | Yes | No | Yes[93] | With plugins | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | |||
Widgets themeable / skinnable | Yes | Yes | Yes[94] | Yes[95] | Yes | Yes[96] | Yes[97] | Yes[98] | Yes | Yes | Yes | Yes[99] | Yes | Yes[100] | Yes[101] | Yes | Yes | Yes | ||||||||
GUI resizable panels and modal dialogs | Yes | Yes | Yes[102] | Yes | Yes | Yes | Yes | With plugins | Yes[103] | Partial | Yes | Yes | Yes[104] | Yes | Yes[105] | Yes | Yes | |||||||||
GUI page layout | Yes | Yes | Yes[106] | Yes | Yes | Yes | With plugin[107] | Yes[103] | Yes | Yes | Yes | Yes[108] | Yes | Yes[109] | Yes | Yes | ||||||||||
Canvas support | Yes | Yes | Yes[110] | Yes | Yes | Yes | With plugin[111] | Yes[112] | No | Yes | Yes | Yes | Yes[113] | Yes | Yes[114] | Yes | ||||||||||
Mobile/tablet support (touch events) | Yes | Yes | Yes | Yes | Yes[115] | Yes[116] | No | Yes | Yes | With plugin[117] | With plugin[118] | With plugin[119] | Yes | Yes | Yes | Yes[120][121] | Yes | Yes[122] | Yes | Yes | ||||||
Accessibility / graceful degradation[123] |
Yes | No | Yes | Yes | No | Yes[124] | Yes | Partial[125] | Yes[126] | Yes | Yes | Yes | No[127] | Degradation: No Accessibility: Yes |
Yes[128] | Yes | No | No | ||||||||
ARIA compliant | Yes | No | Yes[124] | No | Yes[129] | No | No | Yes | Yes | Yes | No | No | ||||||||||||||
Developer tools, Visual design | Yes | No | No | Yes[130] | Yes[131] | In development[132] | in progress[133] | Yes[134] | Yes | Yes[135][136] | Yes[137][138] | With plugins | No | Yes[139] | Yes | Yes[140] | Yes[141] | Yes | In development | Visual Studio | ||||||
Offline storage[142] | No | Yes[143] | No[144] | Yes | Via Adobe Air | Via Google Gears[145] | With plugin[146] | No | Yes | Via Pyjamas-Desktop[147] | Yes | No | Yes | planned | Via plugin[148] | Yes | Yes | Yes | ||||||||
Cross-browser 2d Vector Graphics[149] | Yes[150] | Yes[151] | Yes | With plugin[152] | Yes[153] | With plugins | Yes | Yes | Yes (via Raphael) | Yes | Yes[154] | No | With plugins | |||||||||||||
Charting & Dashboard[155] | Yes[156] | Yes[157] | Yes[158] | Yes[159] | With plugin[160][161] | With plugins | Yes | Yes[162] | Yes[163] | Yes[164] | Yes[165] | |||||||||||||||
RTL Support in UI Components | Yes | Yes | Yes | Depends on the plugin used | No | Yes | No | Yes | ||||||||||||||||||
AccDC | Ample SDK | AngularJS | CupQ | DHTMLX | Dojo | Echo3 | Enyo | Ext JS | Google Web Toolkit | jQuery | midori | MochiKit | MooTools | PhoneJS | Prototype & script. aculo.us[1] | Pyjamas | qooxdoo | Rialto Toolkit | Rico | SmartClient and SmartGWT | Wakanda | YUI | ZK | Webix | Web Atoms JS | |
Browser Support | ||||||||||||||||||||||||||
Internet Explorer | 6+ | 6+ | 8+ | 6+ | 6+ | 6+ | 6+ | 8+[166] | 6+ | 6+ | 6+[167] | 6+ | 6 | 6+ | 9+ | 6+ | 6+ | 6+ | 6+ | 5.5+ | 6+ | 9+ | 6+ | 6+ | 8+ | 8+ |
Mozilla Firefox | 2+ | 1+ | 4+ | 2+ | 1+ | 3+[168] | 1.5+ | >4[166] | 3.6+ | 1+ | 2+[167] | 1.5+ | 1.0.7, 1.5b2 | 2+ | 17+ | 1.5+ | 1+ | 2+ | 1.5+ | 1+ | 1+ | 4+ | 3+[169] | 2.0+ | 3+ | 4+ |
Safari | 3+ | 3+ | 5+ | 3+ | 2.0+ | 4[168] | 3+ | >5[166] | 4+ | 3+ | 3+[167] | 2+ | 2.0.2 | 3+ | 5+ | 2.0.4+ | 2+ | 3+ | 2.0.3[170] | 3+ | 5+ | 4.0 | 3+ | 4+ | 4+ | |
Opera | 9+ | 9.6+ | 11+ | 9+ | 9+ | 10.50+[168] | 9+ | [166] | 11+ | 9+ | 9+[167] | 9+ | 8.5 | 9+ | 11+ | 9.25+ | 9+ | 9+ | 9+ | 9+ | 10.0+ | 9+ | 9+ | 9+ | ||
Chrome | 1+ | 1+ | 30+ | 1+ | 1+ | 3[168] | 1+ | >10[166] | 10+[171] | 1+ | 1+[167] | 1+ | 22+ | 1+ (starting with 1.6.1RC3) | 2+ | 1+ | 11+ | 2+ | 1+ | 10+ |
See also
Notes
- ^ a b c d script.aculo.us is an add-on to Prototype.
- ^ Dojo Base
- ^ [1]
- ^ [2]
- ^ Feature detection is preferred by many to browser sniffing to support future browsers: Browser Detecting (and what to do Instead), Feature Detection: State of the Art Browser Scripting, Browser Feature Detection
- ^ Ample SDK uses Browser Sniffing
- ^ [CupQ uses Browser Sniffing]
- ^ Documentation dojo/has
- ^ GWT implementations for every browser
- ^ Google Docs (built on GWT) stops working on a Firefox rebranding because of not doing proper Feature Detection
- ^ jQuery 1.3
- ^ http://www.midorijs.com/midori.js midori.js
- ^ http://www.mochikit.com/MochiKit/Style.js MochiKit/Style.js
- ^ http://mootools.net/blog/2010/10/11/mootools-core-1-3-stable-and-mootools-more-1-3rc/
- ^ Feature detection all the way
- ^ https://svn.improve.fr/rialto/Rialto-coreV1/rialtoEngine/javascript/rialto.js
- ^ Author disagrees that feature detection alone is sufficient
- ^ http://zssdemo.zkoss.org/zkau/web/js/zk/zk.js.dsp zk.js
- ^ kangax (5 April 2010). "What's wrong with extending the DOM". Retrieved 6 April 2010.
- ^ http://www.amplesdk.com/about/technologies/javascript/
- ^ MooTools Docs - Element/Element
- ^ Prototype JavaScript framework: Element
- ^ Prototype 2.0 will not extend the DOM - Ajaxian
- ^ AJAX and Dojo
- ^ MooTools Request
- ^ Inner HTML demo
- ^ AJAX and Dojo
- ^ MooTools Request
- ^ Inner HTML demo
- ^ http://cometd.org/documentation/cometd-javascript
- ^ https://github.com/kembuco/extjs-cometd/
- ^ http://code.google.com/p/rocket-gwt/wiki/Comet
- ^ http://cometd.org/documentation/cometd-javascript
- ^ Real-time Messaging Module
- ^ http://books.zkoss.org/wiki/ZK_Developer%27s_Reference/Server_Push
- ^ http://docs.dojocampus.org/dojox/data
- ^ http://docs.dojocampus.org/dojo/dnd
- ^ http://code.google.com/p/gwt-dnd/
- ^ MooTools Drag.Move
- ^ http://docs.dojocampus.org/dojo/fx/
- ^ MooTools Fx.Tween (Simple Transitions)
- ^ http://docs.dojocampus.org/dojox/fx/
- ^ http://enyojs.com/enwiki/api/#enyo.Animator
- ^ Mochikit.Visual
- ^ MooTools Fx.Morph (Advanced Transitions)
- ^ http://www.amplesdk.com/about/technologies/javascript/
- ^ http://docs.dojocampus.org/quickstart/events
- ^ http://mootools.net/docs/core/Types/Event MooTools Events
- ^ Pyjamas demo of onclick event handling
- ^ http://docs.dojocampus.org/dojo/back
- ^ http://www.sencha.com/products/js/roadmap.php Since v2.2
- ^ Address, History, jquery History, History/Remote, jQuery BBQ
- ^ MooTools-History
- ^ a b Pyjamas Kitchen Sink demo
- ^ dhtmlxForm
- ^ http://docs.dojocampus.org/dijit/form
- ^ http://techblog.maydu.eu/?p=7
- ^ http://plugins.jquery.com
- ^ Data Grid
- ^ Data Views
- ^ dhtmlxGrid
- ^ http://docs.dojocampus.org/dojox/grid
- ^ jqGrid, Ingrid, Flexigrid, SlickGrid, ParamQuery Grid
- ^ JxLib Library or phatfusion sortable table plugin or DrasticGrid
- ^ Live grid
- ^ Wakanda DataGrid
- ^ YUI DataTable
- ^ Data Views
- ^ dhtmlxTree
- ^ http://docs.dojocampus.org/dijit/Tree
- ^ Tree demo
- ^ Tree demos
- ^ treeview, file_tree_viewer
- ^ MooTree 2 or JxLib Library or MooTools PowerTools!
- ^ http://pyjs.org/examples/kitchensink/output/KitchenSink.html#Trees Tree
- ^ http://demo.qooxdoo.org/current/demobrowser/ Demo browser
- ^ Wakanda Auto Form
- ^ http://developer.yahoo.com/yui/treeview/ YUI TreeView
- ^ [3]
- ^ dhtmlxEditor
- ^ http://docs.dojocampus.org/dijit/Editor
- ^ Echo 3 new features
- ^ problems with the HTMLEditor creating XHTML vs the HTML it does now
- ^ markitup, jwysiwyg, htmlbox, WYMeditor
- ^ MooEditable
- ^ Wakanda WYSIWYG Editor
- ^ dhtmlxCombo
- ^ http://docs.dojocampus.org/dijit/form/ComboBox
- ^ Autocomplete, Dylans Autocomplete, Yet Another Autocomplete, jQuery plugin for Autocomplete, Jquery Autocomplete, jquery.suggest, Interface Autocompleter
- ^ Digitarald's Autocompleter Plugin
- ^ Wakanda Combo Box
- ^ As of Dojo 1.3, the NodeList.addContent() api can be used to create content for example: dojo.query(".note").addContent("h4 NOTE: h4", "before");
- ^ MooTools Elements
- ^ SkinBuilder
- ^ http://docs.dojocampus.org/dijit-themes
- ^ Community-driven skins, Theme Builder
- ^ Skinning GWT controls with style sheets
- ^ ThemeRoller
- ^ http://manual.qooxdoo.org/current/pages/gui_toolkit.html#themes
- ^ Wakanda Widget Overview (skins / styles)
- ^ Skinning YUI
- ^ dhtmlxWindows
- ^ a b Using MochaUI Library or JxLib
- ^ Wakanda Dialogs
- ^ http://www.zkoss.org/smalltalks/zkstudio_vedemo/
- ^ dhtmlxLayout
- ^ [4]
- ^ Wakanda Container / Layout
- ^ http://www.zkoss.org/smalltalks/zkstudio_vedemo/
- ^ dojo.gfx
- ^ jQuery Canvas plugin
- ^ MochaUI Library
- ^ Wakanda Canvas
- ^ [5]
- ^ DHTMLX Touch
- ^ dojox.mobile & dojox.mobile.app
- ^ [6]
- ^ jQTouch, jQuery Mobile Project
- ^ MooTools Mobile (unofficial)
- ^ Wakanda Navigation View
- ^ Wakanda Split View
- ^ http://www.zkoss.org/whyzk/Features
- ^ All JavaScript frameworks can be written in an accessible way with graceful degradation, frameworks seen here which imply out-of-the-box accessibility have made a special effort to document best practices for their particular framework.
- ^ a b http://docs.dojocampus.org/quickstart/writingWidgets/a11y
- ^ Section 508 accessibility improvements – v3.0 roadmap
- ^ Built-in Accessibility in GWT 1.5 Applications
- ^ Qooxdoo's "Extreme JavaScript" paradigm
- ^ Yahoo! UI Graded Browser Support
- ^ jQuery UI has ARIA support
- ^ Visual Designer for DHTMLX
- ^ Wavemaker, Aptana Studio
- ^ EchoStudio 3
- ^ [7]
- ^ [8], Theme Builder, Custom build tool
- ^ Netbeans has jQuery support
- ^ jQuery API
- ^ MooTools-core Documentation
- ^ MooTools-more Document
- ^ Custom build, JS Linker, API generation, Unit test framework, etc.
- ^ Wakanda Studio
- ^ CSS Grid Builder, YUI Test Utility, Profiler, Logger Control
- ^ JavaScript frameworks currently only have the ability to support offline storage by taking advantage of pre-installed browser extensions such as Google Gears. If a user does not have one of these supported extensions installed in their browser already then offline support will be unavailable to the framework. JavaScript framework developers interested in implementing Gears may want to start with the Gears Getting Started Guide.
- ^ Tutorial - How to Add Offline Support
- ^ o.DojoToolkit.Org/offline says "Dojo Offline is no longer supported after Dojo 1.3"
- ^ Google API Libraries for Google Web Toolkit
- ^ jQuery HTML5 Storage plugin
- ^ Pyjamas Desktop
- ^ http://yuilibrary.com/gallery/show/storage-lite
- ^ Some JavaScript libraries provide 2d graphics primitives that can be used for cross-browser vector graphics. These libraries rely on underlying technologies in the browser or plugins such as Canvas, SVG, VML, Flash, and Silverlight to do the actual rendering, but help isolate application and widget code from the rendering engine api differences
- ^ [9]
- ^ http://docs.dojocampus.org/dojox/gfx
- ^ http://keith-wood.name/svg.html jQuery SVG plugin
- ^ MooTools ART
- ^ http://books.zkoss.org/wiki/Small_Talks/2010/June/How_To_Use_Canvas4Z
- ^ Some JavaScript libraries include widgets for Charts, Gauges, and other data visualizations.
- ^ [10]
- ^ dhtmlxChart
- ^ http://docs.dojocampus.org/dojox/charting
- ^ http://dev.sencha.com/deploy/dev/docs/?class=Ext.chart.Chart Chart API
- ^ jQuery Flot Plugin
- ^ jQuery Visualize Plugin
- ^ Wakanda Chart
- ^ [11]
- ^ [12]
- ^ Webix Charts
- ^ a b c d e http://enyojs.com/docs/platforms
- ^ a b c d e http://docs.jquery.com/Browser_Compatibility
- ^ a b c d http://docs.dojocampus.org/releasenotes/1.4
- ^ http://developer.yahoo.com/yui/articles/gbs/
- ^ http://openrico.org/resources
- ^ http://www.sencha.com/products/js/