Comparison of JavaScript frameworks

From Wikipedia, the free encyclopedia
Jump to: navigation, search

There are many JavaScript frameworks available. The intention of this comparison is to show some examples of notable JavaScript frameworks.

Comparison of JavaScript frameworks[edit]

AccDC Ample SDK AngularJS Atoms.js CupQ DHTMLX Dojo Echo3 Ember.js Enyo Ext JS Google Web Toolkit jQuery midori MochiKit MooTools PhoneJS Prototype & script. aculo.us[1] Pyjamas qooxdoo Rialto Toolkit Rico SmartClient & SmartGWT Wakanda YUI ZK Webix
Version compared 3.0
September 2013
0.9.3
1 Jul 2010
1.2.14
1 Mar 2014
1.2.31
1 May 2014
0.2
June 2012
4.0
4 Jun 2014
1.10
3.0.rc1
24 Mar 2011
1.7.0
19 Aug 2014
2.0.1
30 Aug 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 Feb 2012
13.1.4
6 Jun 2013
Prototype: 1.7.1
8 Aug 2012
script.aculo.us: 1.9.0
23 Dec 2010
0.5
March 2009
4.0.1
9 Jul 2014
1.1.5
25 Feb 2011
2.0
3 May 2009
SmartClient: 10.0
September 2014
SmartGWT: 5.0
September 2014
3
19 Dec 2012
3.10.0
23 Apr 2013
6.5.1.1
13 Dec 2012 / 12 Sep 2012;
1
11 Jul 2013
Size Variable.
Core size:
40 kB (minified & gzipped)
36 kB (minified & compressed) 44 kB (gzipped) 20 kB (minified) Variable Variable.
Base size:
41 kB (minified & gzipped),
155 kB (minified),
598 kB (uncompressed)[2]
95 kB (minified & gzipped),
340 kB (minified),
1.5 MB (uncompressed)
<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 110 kB (gzipped)
License MIT License MIT & GPL MIT MIT MIT GPL and Commercial BSD & AFL MPL, LGPL or GPL MIT Apache 2 [15] 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
Source language JavaScript  ? JavaScript JavaScript + HTML + CSS JavaScript JavaScript JavaScript + HTML JavaScript and/or Java JavaScript 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
Features
AccDC Ample SDK AngularJS Atoms.js CupQ DHTMLX Dojo Echo3 Ember.js 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
Feature detection[5] Yes No[6] Yes Yes Yes[7] No Yes[8] No Yes Yes[9] No[10][11] Yes[12] No[13] No[14] Yes[15] Yes No[16] Yes No[17] No Partial [18] Partial Yes No[19] Yes
DOM wrapped[20] Yes Yes[21] Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes No[22] Yes No[23][24] Yes Yes Yes No Yes Yes Yes Yes Yes
XMLHttpRequest
data retrieval
Yes Yes Yes Yes No Yes Yes[25] Yes Yes Yes Yes Yes Yes Yes[26] Yes Yes Yes Yes No Yes[27] Yes Yes Yes Yes
[WebSocket] Yes Yes Yes No Yes Yes[28] Yes Yes Yes Yes Yes Yes Yes[29] Yes Yes Yes Yes No Yes[30] Yes Yes Yes Yes
Server push data retrieval Yes Yes[31] Yes[32] Yes[33] Yes[34] Yes Yes[35] Via Plugin Yes[36]
Other data retrieval Yes: XML, HTML Yes: XML Yes: XML, HTML,CSV Yes: XML, CSV, HTML Yes: XML, HTML, CSV, ATOM[37] Yes: XML, SOAP, AMF, Ext.Direct 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
Drag and drop Yes: With keyboard accessibility Yes No Yes Yes[38] Yes Yes With plugin[39] Yes Yes Yes Yes[40] Yes Yes Depends Yes Yes Yes Yes Yes Yes Yes Yes
Simple visual effects Yes Yes Yes Yes No Yes Yes[41] Yes Yes Yes Yes Yes Yes Yes[42] Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Animation /
advanced visual effects
Yes Yes CSS No Yes Yes[43] Yes Yes[44] Yes Yes Yes Yes Yes[45] Yes[46] Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Event handling Yes Yes[47] Yes Yes Yes Yes Yes[48] Yes Yes Yes Yes Yes Yes Yes Yes[49] Yes Yes Yes[50] Yes Yes Yes Yes Yes Yes Yes Yes
Back button support /
history management
Yes Yes No No Yes[51] Yes Yes[52] Yes[53] Yes With plugins[54] Yes With plugin[55] Yes Yes Yes[56] Yes No Yes Yes Yes Yes Yes
Input form widgets & validation Yes Yes Yes Yes No Yes[57] Yes[58] Yes Yes Yes Yes, Validation requires plugin[59] With plugins[60] Yes Yes Yes Yes Yes[56] Yes Yes Yes Yes Yes Yes Yes Yes
AccDC Ample SDK AngularJS Atoms.js CupQ DHTMLX Dojo Echo3 Ember.js 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
Grid Yes[61] Yes[62] Template No Yes[63] Yes[64] Yes Yes Yes With plugins[65] No With plugin[66] With plugins Yes Yes Yes Yes[67] Yes Yes[68] Yes[69] Yes Yes
Hierarchical Tree Yes Yes[70] Yes Yes Yes[71] Yes[72] Yes[73] Yes[74] Yes With plugins[75] No With plugins[76] No Yes[77] Yes[78] Yes Yes Yes (Auto Form)[79] Yes[80] Yes Yes
Rich text editor Yes[81] No With Plugins No Yes[82] Yes[83] Yes[84] Yes[85] Yes With plugins[86] No Yes[87] No Yes Yes No No Yes Yes[88] Yes Yes With plugins
Autocompletion tools No Yes No Yes[89] Yes[90] Yes Yes Yes[91] Yes With plugin[92] Yes Yes Yes Yes Yes Yes Yes[93] Yes Yes Yes
HTML generation tools Yes Yes No Yes Yes Yes Yes[94] Yes Yes Yes No Yes[95] With plugins Yes Yes Yes Yes Yes Yes No Yes Yes Yes
Widgets themeable / skinnable Yes Yes Yes Yes[96] Yes[97] Yes Yes[98] Yes[99] Yes[100] Yes Yes Yes Yes[101] Yes Yes[102] Yes[103] Yes Yes
GUI resizable panels and modal dialogs Yes Yes Yes Yes[104] Yes Yes Yes Yes With plugins Yes[105] Partial Yes Yes Yes[106] Yes Yes[107] Yes
GUI page layout Yes Yes Yes Yes[108] Yes Yes Yes With plugin[109] Yes[105] Yes Yes Yes Yes[110] Yes Yes[111] Yes
Canvas support Yes Yes Yes[112] Yes Yes Yes With plugin[113] Yes[114] No Yes Yes Yes Yes[115] Yes Yes[116] Yes
Mobile/tablet support (touch events) Yes Yes Yes Yes Yes Yes[117] Yes[118] No Yes Yes Yes With plugin[119] With plugin[120] With plugin[121] Yes Yes Yes Yes[122][123] Yes Yes[124] Yes
Accessibility /
graceful degradation[125]
Yes No Yes Relies on built-in ARIA attributes Yes No Yes[126] No Yes Yes[127] Yes[128] Yes Yes Yes No[129] Degradation: No
Accessibility: Yes
Yes[130] Yes No
ARIA compliant Yes No Yes[126] Yes[131] Yes[132] No No Yes Yes Yes No
Developer tools, Visual design Yes No Visual Studio, CodeMirror Plugin No Yes[133] Yes[134] In development[135] in progress[136] Yes[137] Yes Yes[138][139] Yes[140][141] With plugins No Yes[142] Yes Yes[143] Yes[144] Yes In development
Offline storage[145] Yes No Yes No[146] Yes Yes[147] Via Google Gears[148] With plugin[149] No Yes Via Pyjamas-Desktop[150] Yes No Yes planned Via plugin[151] Yes Yes
Cross-browser 2d Vector Graphics[152] Yes[153] With plugins Yes[154] Yes With plugin[155] Yes[156] With plugins Yes Yes Yes (via Raphael) Yes Yes[157] No
Charting & Dashboard[158] Yes[159] Yes[160] Yes[161] Yes[162] With plugin[163][164] With plugins Yes Yes[165] Yes[166] Yes[167] Yes[168]
RTL Support in UI Components CSS Yes Yes Yes Depends on the plugin used No Yes No
Browser Support
AccDC Ample SDK AngularJS Atoms.js CupQ DHTMLX Dojo Echo3 Ember.js 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
Internet Explorer 6+ 6+ 8+ 8+ 6+ 6+ 6+ 6+ 6+ 8+[169] 6+ 6+ 6+[170] 6+ 6 6+ 9+ 6+ 6+ 6+ 6+ 5.5+ 6+ 9+ 6+ 6+ 8+
Mozilla Firefox 2+ 1+ 4+ 4+ 2+ 1+ 3+[171] 1.5+ 3+ >4[169] 3.6+ 1+ 2+[170] 1.5+ 1.0.7, 1.5b2 2+ 17+ 1.5+ 1+ 2+ 1.5+ 1+ 1+ 4+ 3+[172] 2.0+ 3+
Safari 3+ 3+ 5+ 4+ 3+ 2.0+ 4[171] 3+ 4+ >5[169] 4+ 3+ 3+[170] 2+ 2.0.2 3+ 5+ 2.0.4+ 2+ 3+ 2.0.3[173] 3+ 5+ 4.0 3+ 4+
Opera 9+ 9.6+ 11+ 11+ 9+ 9+ 10.50+[171] 9+ 10.6+ [169] 11+ 9+ 9+[170] 9+ 8.5 9+ 11+ 9.25+ 9+ 9+ 9+ 9+ 10.0+ 9+ 9+
Chrome 1+ 1+ 30+ 10+ 1+ 1+ 3[171] 1+ 14+ >10[169] 10+[174] 1+ 1+[170] 1+ 22+ 1+ (starting with 1.6.1RC3) 2+ 1+ 11+ 2+ 1+

See also[edit]

Notes[edit]

  1. ^ a b c d script.aculo.us is an add-on to Prototype.
  2. ^ Dojo Base
  3. ^ [1]
  4. ^ [2]
  5. ^ 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
  6. ^ Ample SDK uses Browser Sniffing
  7. ^ [CupQ uses Browser Sniffing]
  8. ^ Documentation dojo/has
  9. ^ http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.supports
  10. ^ GWT implementations for every browser
  11. ^ Google Docs (built on GWT) stops working on a Firefox rebranding because of not doing proper Feature Detection
  12. ^ jQuery 1.3
  13. ^ http://www.midorijs.com/midori.js midori.js
  14. ^ http://www.mochikit.com/MochiKit/Style.js MochiKit/Style.js
  15. ^ http://mootools.net/blog/2010/10/11/mootools-core-1-3-stable-and-mootools-more-1-3rc/
  16. ^ Feature detection all the way
  17. ^ https://svn.improve.fr/rialto/Rialto-coreV1/rialtoEngine/javascript/rialto.js
  18. ^ Author disagrees that feature detection alone is sufficient
  19. ^ http://zssdemo.zkoss.org/zkau/web/js/zk/zk.js.dsp zk.js
  20. ^ kangax (5 April 2010). "What’s wrong with extending the DOM". Retrieved 6 April 2010. 
  21. ^ http://www.amplesdk.com/about/technologies/javascript/
  22. ^ MooTools Docs - Element/Element
  23. ^ Prototype JavaScript framework: Element
  24. ^ Prototype 2.0 will not extend the DOM - Ajaxian
  25. ^ AJAX and Dojo
  26. ^ MooTools Request
  27. ^ Inner HTML demo
  28. ^ AJAX and Dojo
  29. ^ MooTools Request
  30. ^ Inner HTML demo
  31. ^ http://cometd.org/documentation/cometd-javascript
  32. ^ https://github.com/kembuco/extjs-cometd/
  33. ^ http://code.google.com/p/rocket-gwt/wiki/Comet
  34. ^ http://cometd.org/documentation/cometd-javascript
  35. ^ Real-time Messaging Module
  36. ^ http://books.zkoss.org/wiki/ZK_Developer%27s_Reference/Server_Push
  37. ^ http://docs.dojocampus.org/dojox/data
  38. ^ http://docs.dojocampus.org/dojo/dnd
  39. ^ http://code.google.com/p/gwt-dnd/
  40. ^ MooTools Drag.Move
  41. ^ http://docs.dojocampus.org/dojo/fx/
  42. ^ MooTools Fx.Tween (Simple Transitions)
  43. ^ http://docs.dojocampus.org/dojox/fx/
  44. ^ http://enyojs.com/api/#enyo.Animator
  45. ^ Mochikit.Visual
  46. ^ MooTools Fx.Morph (Advanced Transitions)
  47. ^ http://www.amplesdk.com/about/technologies/javascript/
  48. ^ http://docs.dojocampus.org/quickstart/events
  49. ^ http://mootools.net/docs/core/Types/Event MooTools Events
  50. ^ Pyjamas demo of onclick event handling
  51. ^ http://docs.dojocampus.org/dojo/back
  52. ^ http://enyojs.com/docs/2.4.0/api/#enyo.Router
  53. ^ http://www.sencha.com/products/js/roadmap.php Since v2.2
  54. ^ Address, History, jquery History, History/Remote, jQuery BBQ
  55. ^ MooTools-History
  56. ^ a b Pyjamas Kitchen Sink demo
  57. ^ dhtmlxForm
  58. ^ http://docs.dojocampus.org/dijit/form
  59. ^ http://techblog.maydu.eu/?p=7
  60. ^ http://plugins.jquery.com
  61. ^ Data Grid
  62. ^ Data Views
  63. ^ dhtmlxGrid
  64. ^ http://docs.dojocampus.org/dojox/grid
  65. ^ jqGrid, Ingrid, Flexigrid, SlickGrid, ParamQuery Grid, ShieldUI jQuery Grid
  66. ^ JxLib Library or phatfusion sortable table plugin or DrasticGrid
  67. ^ Live grid
  68. ^ Wakanda DataGrid
  69. ^ YUI DataTable
  70. ^ Data Views
  71. ^ dhtmlxTree
  72. ^ http://docs.dojocampus.org/dijit/Tree
  73. ^ Tree demo
  74. ^ Tree demos
  75. ^ treeview, file_tree_viewer
  76. ^ MooTree 2 or JxLib Library or MooTools PowerTools!
  77. ^ http://pyjs.org/examples/kitchensink/output/KitchenSink.html#Trees Tree
  78. ^ http://demo.qooxdoo.org/current/demobrowser/ Demo browser
  79. ^ Wakanda Auto Form
  80. ^ http://developer.yahoo.com/yui/treeview/ YUI TreeView
  81. ^ [3]
  82. ^ dhtmlxEditor
  83. ^ http://docs.dojocampus.org/dijit/Editor
  84. ^ Echo 3 new features
  85. ^ problems with the HTMLEditor creating XHTML vs the HTML it does now
  86. ^ markitup, jwysiwyg, htmlbox, WYMeditor
  87. ^ MooEditable
  88. ^ Wakanda WYSIWYG Editor
  89. ^ dhtmlxCombo
  90. ^ http://docs.dojocampus.org/dijit/form/ComboBox
  91. ^ http://jqueryui.com/autocomplete/
  92. ^ Digitarald's Autocompleter Plugin
  93. ^ Wakanda Combo Box
  94. ^ 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");
  95. ^ MooTools Elements
  96. ^ SkinBuilder
  97. ^ http://docs.dojocampus.org/dijit-themes
  98. ^ Community-driven skins, Theme Builder
  99. ^ Skinning GWT controls with style sheets
  100. ^ ThemeRoller
  101. ^ http://manual.qooxdoo.org/current/pages/gui_toolkit.html#themes
  102. ^ Wakanda Widget Overview (skins / styles)
  103. ^ Skinning YUI
  104. ^ dhtmlxWindows
  105. ^ a b Using MochaUI Library or JxLib
  106. ^ Wakanda Dialogs
  107. ^ http://www.zkoss.org/smalltalks/zkstudio_vedemo/
  108. ^ dhtmlxLayout
  109. ^ [4]
  110. ^ Wakanda Container / Layout
  111. ^ http://www.zkoss.org/smalltalks/zkstudio_vedemo/
  112. ^ dojo.gfx
  113. ^ jQuery Canvas plugin
  114. ^ MochaUI Library
  115. ^ Wakanda Canvas
  116. ^ [5]
  117. ^ DHTMLX Touch
  118. ^ dojox.mobile & dojox.mobile.app
  119. ^ [6]
  120. ^ jQTouch, jQuery Mobile Project
  121. ^ MooTools Mobile (unofficial)
  122. ^ Wakanda Navigation View
  123. ^ Wakanda Split View
  124. ^ http://www.zkoss.org/whyzk/Features
  125. ^ 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.
  126. ^ a b http://docs.dojocampus.org/quickstart/writingWidgets/a11y
  127. ^ [7]
  128. ^ Built-in Accessibility in GWT 1.5 Applications
  129. ^ Qooxdoo's "Extreme JavaScript" paradigm
  130. ^ Yahoo! UI Graded Browser Support
  131. ^ [8]
  132. ^ jQuery UI has ARIA support
  133. ^ Visual Designer for DHTMLX
  134. ^ Wavemaker, Aptana Studio
  135. ^ EchoStudio 3
  136. ^ [9]
  137. ^ [10], Theme Builder, Custom build tool
  138. ^ Netbeans has jQuery support
  139. ^ jQuery API
  140. ^ MooTools-core Documentation
  141. ^ MooTools-more Document
  142. ^ Custom build, JS Linker, API generation, Unit test framework, etc.
  143. ^ Wakanda Studio
  144. ^ CSS Grid Builder, YUI Test Utility, Profiler, Logger Control
  145. ^ 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.
  146. ^ o.DojoToolkit.Org/offline says "Dojo Offline is no longer supported after Dojo 1.3"
  147. ^ http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.data.proxy.WebStorage
  148. ^ Google API Libraries for Google Web Toolkit
  149. ^ jQuery HTML5 Storage plugin
  150. ^ Pyjamas Desktop
  151. ^ http://yuilibrary.com/gallery/show/storage-lite
  152. ^ 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
  153. ^ [11]
  154. ^ http://docs.dojocampus.org/dojox/gfx
  155. ^ http://keith-wood.name/svg.html jQuery SVG plugin
  156. ^ MooTools ART
  157. ^ http://books.zkoss.org/wiki/Small_Talks/2010/June/How_To_Use_Canvas4Z
  158. ^ Some JavaScript libraries include widgets for Charts, Gauges, and other data visualizations.
  159. ^ [12]
  160. ^ dhtmlxChart
  161. ^ http://docs.dojocampus.org/dojox/charting
  162. ^ http://dev.sencha.com/deploy/dev/docs/?class=Ext.chart.Chart Chart API
  163. ^ jQuery Flot Plugin
  164. ^ jQuery Visualize Plugin
  165. ^ Wakanda Chart
  166. ^ [13]
  167. ^ [14]
  168. ^ Webix Charts
  169. ^ a b c d e http://enyojs.com/docs/platforms
  170. ^ a b c d e http://docs.jquery.com/Browser_Compatibility
  171. ^ a b c d http://docs.dojocampus.org/releasenotes/1.4
  172. ^ http://developer.yahoo.com/yui/articles/gbs/
  173. ^ http://openrico.org/resources
  174. ^ http://www.sencha.com/products/js/