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.

General information[edit]

Framework Version compared Size License Source language
Ample SDK 0.9.3
1 Jul 2010
Variable.
Core size:
40 kB (minified & gzipped)
MIT & GPL ?
AngularJS 1.2.14
1 Mar 2014
36 kB (minified & compressed) MIT JavaScript
CupQ (abandoned) 0.2
June 2012
20 kB (minified) MIT JavaScript
DHTMLX 4.0
4 Jun 2014
Variable GPL & Commercial[1] JavaScript
Dojo 1.10.3
08 Dec 2014
Variable.
Base size:
41 kB (minified & gzipped),
155 kB (minified),
598 kB (uncompressed)[2]
BSD & AFL JavaScript + HTML
Echo3 3.0.rc1
24 Mar 2011
? MPL, LGPL or GPL JavaScript and/or Java
Ember.js 1.7.0
19 Aug 2014
95 kB (minified & gzipped),
340 kB (minified),
1.5 MB (uncompressed)
MIT JavaScript
Enyo 2.0.1
30 Aug 2012
<25 kB (core gzipped) Apache 2 [3] JavaScript
Ext JS 4.2
13 Mar 2013
84–502 kB GPL & Commercial [4] JavaScript
Google Web Toolkit 2.4
September 2011
Variable Apache Java
jQuery 1.9.1
4 Feb 2013
32 KiB (minified & gzipped),
93 KiB (minified),
252 KiB (uncompressed)
MIT JavaScript
Kendo UI 2014.1.416
16 April 2014
Variable, custom download builder available Apache 2 & Commercial [5] JavaScript
midori (abandoned) 2010.05
10 May 2010
9 kB (minified & gzipped),
50 kB (uncompressed)
MIT ?
MochiKit (abandoned) 1.4.2 - no longer developed
17 Nov 2008
32–200 kB MIT & AFL ?
MooTools 1.4.5
26 Feb 2012
Variable;
7.3–65 KiB (YUI Compressor),[6]
101 KiB (uncompressed)[7]
MIT JavaScript
SAP OpenUI5 1.26.6
February 2015
Apache 2[8] JavaScript
Prototype & script. aculo.us[9] Prototype: 1.7.1
8 Aug 2012
script.aculo.us: 1.9.0
23 Dec 2010
46–278 kB MIT JavaScript
Pyjamas 8.0
March 2016
Variable Apache 2 & GPL Python
qooxdoo 5.0
15 Jun 2015
Variable, starting at 6 kB (gzipped) LGPL & EPL JavaScript
Rialto Toolkit (abandoned) 1.1.5
25 Feb 2011
520 kB Apache ?
Rico (abandoned) 2.0
3 May 2009
? Apache ?
SmartClient & SmartGWT SmartClient: 10.0
September 2014
SmartGWT: 5.0
September 2014
100–500 kb (gzipped). LGPL & Commercial Server: Java
Client: Java (Smart GWT) or Javascript (SmartClient) or XML (both)
SproutCore 1.10.3
4 Nov 2014
Variable MIT JavaScript
Wakanda 9
14 Nov 2014
Variable GPL3 (framework), AGPL (server) & Commercial JavaScript + HTML + CSS
YUI (abandoned) 3.18.1
21 Oct 2014
Variable; library core is 31 kB BSD JavaScript + HTML + CSS
ZK 6.5.1.1
13 Dec 2012 / 12 Sep 2012;
Variable LGPL & GPL & ZOL XML + Java (JavaScript optional)
Webix 2.2
January 2015
120 kB (gzipped) GPL & Commercial JavaScript

Features[edit]

  AccDC Ample SDK AngularJS Atoms.js CupQ DHTMLX Dojo Echo3 Ember.js Enyo Ext JS Google Web Toolkit jQuery Kendo UI midori MochiKit MooTools OpenUI5 PhoneJS Prototype & script. aculo.us[9] Pyjamas qooxdoo Rialto Toolkit Rico SmartClient and SmartGWT SproutCore Wakanda YUI ZK Webix
Feature detection[10] Yes No[11] Yes Yes Yes[12] No Yes[13] No Yes Yes[14] No[15][16] Yes[17] Yes[18] No[19] No[20] Yes[21] Yes No[22] Yes No[23] No Partial [24] Yes Partial Yes No[25] Yes
DOM wrapped[26] Yes Yes[27] Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes Yes No[28] Yes No[29][30] Yes Yes Yes No Yes No Yes Yes Yes Yes
XMLHttpRequest
data retrieval
Yes Yes Yes Yes No Yes Yes[31] Yes Yes Yes Yes Yes Yes Yes Yes[32] Yes Yes Yes Yes Yes No Yes[33] Yes Yes Yes Yes Yes
WebSocket Yes Yes Yes No Yes Yes[31] Yes Yes Yes Yes Yes Yes Yes Yes[32] Yes[34] Yes Yes Yes Yes No Yes[33] Yes Via Plugin Yes Yes Yes
Server push data retrieval Yes Yes[35] Yes[36] Yes[37] Yes[35] Yes Yes[38] Via Plugin Via Plugin Yes[39]
Other data retrieval Yes: XML, HTML Yes: XML Yes: XML, HTML,CSV Yes: XML, CSV, HTML Yes: XML, HTML, CSV, ATOM[40] Yes: XML, SOAP, AMF, Ext.Direct Yes: RPC, RequestFactory Yes: XML, HTML Yes: XML, JSON, SOAP, REST, OData 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[41] Yes Yes With plugin[42] Yes Yes Yes Yes Yes[43] Yes[44] Yes Yes Depends Yes Yes Yes Yes Yes Yes Yes Yes Yes
Simple visual effects Yes Yes Yes Yes No Yes Yes[45] Yes Yes Yes Yes Yes Yes Yes Yes[46] Yes Yes Yes Yes Yes No Yes Yes Yes[47] Yes Yes Yes Yes
Animation /
advanced visual effects
Yes Yes CSS No Yes Yes[48] Yes Yes[49] Yes Yes Yes Yes Yes Yes[50] Yes[51] Yes Yes Yes No Yes Yes Yes[47] Yes Yes Yes Yes
Back button support /
history management
Yes Yes No No Yes[52] Yes Yes[53] Yes[54] Yes With plugins[55] Yes[56] Yes With plugin[57] Yes Yes Yes[58] Yes No Yes Yes Yes Yes Yes Yes
Input form widgets & validation Yes Yes Yes Yes No Yes[59] Yes[60] Yes Yes Yes Yes, Validation requires plugin[61] With plugins[62] Yes Yes Yes Yes Yes Yes Yes[58] Yes 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 Kendo UI midori MochiKit MooTools OpenUI5 PhoneJS Prototype & script. aculo.us[9] Pyjamas qooxdoo Rialto Toolkit Rico SmartClient and SmartGWT SproutCore Wakanda YUI ZK Webix
Grid Yes[63] Yes[64] Template No Yes[65] Yes[66] Yes Yes Yes With plugins[67] Yes No With plugin[68] Yes With plugins Yes Yes Yes Yes[69] Yes Yes Yes[70] Yes[71] Yes Yes
Hierarchical Tree Yes Yes[64] Yes Yes Yes[72] Yes[73] Yes[74] Yes[75] Yes With plugins[76] Yes[77] No With plugins[78] Yes No Yes[79] Yes[80] Yes Yes Yes Yes (Auto Form)[81] Yes[82] Yes Yes
Rich text editor Yes[83] No With Plugins No Yes[84] Yes[85] Yes[86] Yes[87] Yes With plugins[88] Yes[89] No Yes[90] No Yes Yes No No Yes Via plugin Yes[91] Yes Yes Integrates with external widgets
Autocompletion tools No Yes No Yes[92] Yes[93] Yes Yes Yes[94] Yes[95] Yes With plugin[96] Yes Yes Yes Yes Yes Yes With plugins Yes[97] Yes Yes Yes
HTML generation tools Yes Yes No Yes Yes Yes Yes[98] Yes Yes Yes Yes No Yes[99] With plugins Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes
Widgets themeable / skinnable Yes Yes Yes Yes[100] Yes[101] Yes Yes[102] Yes[103] Yes[104] Yes[105] Yes Yes Yes Yes Yes[106] Yes Yes Yes[107] Yes[108] Yes Yes
GUI resizable panels and modal dialogs Yes Yes Yes Yes[109] Yes Yes Yes Yes With plugins Yes Yes[110] Partial Yes Yes Yes Yes[111] Yes Yes[112] Yes
GUI page layout Yes Yes Yes Yes[113] Yes Yes Yes With plugin[114] Bootstrap integration[115] Yes[110] Yes Yes Yes Yes Yes[116] Yes Yes[112] Yes
Canvas support Yes Yes Yes[117] Yes Yes Yes With plugin[118] Yes Yes[119] No Yes Yes Yes Yes Yes[120] Yes Yes[121] Yes
Mobile/tablet support (touch events) Yes Yes Yes Yes Yes Yes[122] Yes[123] No Yes Yes Yes With plugin[124] With plugin[125] Yes With plugin[126] Yes Yes Yes Yes Yes Yes[127][128] Yes Yes[129] Yes
Accessibility /
graceful degradation[130]
Yes No Yes Relies on built-in ARIA attributes Yes No Yes[131] No Yes Yes[132] Yes[133] Yes Yes[134] Yes Yes No[135] Degradation: No
Accessibility: Yes
Degradation: No
Accessibility: Yes
Yes[136] Yes No
ARIA compliant Yes No Yes[131] Yes[132] Yes[137] Yes[138] Yes No No Yes Yes Yes Yes No
Developer tools, Visual design Yes No Visual Studio, CodeMirror Plugin No Yes[139] Yes[140][141] In development[142] in progress[143] Yes[144][145][146] Yes Yes[147][148] Yes[149][150][151][152][153] Yes[154][155] With plugins No Yes[156] Yes No Yes[157] Yes[158][159][160][161] Yes In development
Offline storage[162] Yes No Yes No[163] Yes Yes[164] Via Google Gears[165] With plugin[166] Yes[167] No Yes Via Pyjamas-Desktop[168] Yes No Yes Yes planned Via plugin[169] Yes Yes
Cross-browser 2d Vector Graphics[170] Yes[171] With plugins Yes[172] Yes With plugin[173] Yes Yes[174] With plugins Yes Yes No Yes (via Raphael) Yes Yes[175] No
Charting & Dashboard[176] Yes[177] Yes[178] Yes[179] Yes[180] With plugin[181][182] Yes[183] With plugins Yes No Yes[184] Yes[185] Yes[186] Yes[187]
RTL Support in UI Components CSS Yes Yes Yes Depends on the plugin used Yes[188] Yes No Yes Yes No

Browser support[edit]

Framework Internet Explorer Mozilla Firefox Safari Opera Chrome
AccDC 6+ 2+ 3+ 9+ 1+
Ample SDK 6+ 1+ 3+ 9.6+ 1+
AngularJS (1.3) 8+ (9+) 4+ 5+ 11+ 30+
Atoms.js 8+ 4+ 4+ 11+ 10+
CupQ 6+ 2+ 3+ 9+ 1+
DHTMLX 6+ 1+ 2.0+ 9+ 1+
Dojo 6+ 3+[189] 4[189] 10.50+[189] 3[189]
Echo3 6+ 1.5+ 3+ 9+ 1+
Ember.js 6+ 3+ 4+ 10.6+ 14+
Enyo 8+[190] >4[190] >5[190] >10[190]
Ext JS 6+ 3.6+ 4+ 11+ 10+[191]
Google Web Toolkit 6+ 1+ 3+ 9+ 1+
jQuery 6+[192] 2+[192] 3+[192] 9+[192] 1+[192]
Kendo UI 7+ ESR 5+ (OSX) 15+ Yes[193]
midori 6+ 1.5+ 2+ 9+
MochiKit 6 1.0.7, 1.5b2 2.0.2 8.5
MooTools 6+ 2+ 3+ 9+ 1+
PhoneJS 9+ 17+ 5+ 11+ 22+
Prototype & script. aculo.us[9] 6+ 1.5+ 2.0.4+ 9.25+ 1+ (starting with 1.6.1RC3)
Pyjamas 6+ 1+ 2+ 9+
qooxdoo 6+ 2+ 3+ 9+ 2+
Rialto Toolkit 6+ 1.5+ 9+
Rico 5.5+ 1+ 2.0.3[194]
SmartClient and SmartGWT 6+ 1+ 3+ 9+ 1+
SproutCore 6+ 3+ 4+ 9+ 1+
Wakanda 9+ 4+ 5+ 11+
YUI 6+ 3+[195] 4.0 10.0+
ZK 6+ 2.0+ 3+ 9+ 2+
Webix 8+ 3+ 4+ 9+ 1+

See also[edit]

Notes[edit]

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