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
AngularJS 1.5.0
5 Feb 2016
144 kB (minified & compressed) MIT JavaScript
Backbone.js 1.2.1
June 2015
7.3 kB (Packed and gzipped) MIT JavaScript
DHTMLX 4.0
4 Jun 2014
Variable GPL & Commercial[1] JavaScript
Dojo 1.10.4
18 Jan 2015
Variable.
Base size:
41 kB (minified & gzipped),
155 kB (minified),
598 kB (uncompressed)[2]
BSD & AFL JavaScript + HTML
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.7.0
November 2014
Variable Apache Java
jQuery (library) 1.9.1
4 Feb 2013
32 KiB (minified & gzipped),
93 KiB (minified),
252 KiB (uncompressed)
MIT JavaScript
jQWidgets 3.9.1
29 Oct 2015
3102 KB (minified),
7486 KB (uncompressed)
Creative Commons Attribution-NonCommercial 3.0 and Commercial[5] JavaScript, HTML, CSS
Knockout 3.4.0
17 November 2015
58 KB minified / 280 KB (development mode) MIT JavaScript
MooTools 1.6.0
14 Jan 2016
Variable;
7.3–65 KiB (YUI Compressor),[6]


Variable;
7.3–65 KiB (YUI Compressor),[7]
101 KiB (uncompressed)[8]

MIT JavaScript
React (JavaScript library) 15.4.1
25 Oct 2016
142 kB (minified)[9]
including React (21kB) + ReactDOM(121kB))
BSD JavaScript
SAP OpenUI5 1.26.6
February 2015
20.8MB (1.34.7 runtime, minified, zipped)
6.8MB(1.34.7 runtime mobile, minified, zipped)
52.1MB (1.34.7 SDK, zipped)
Apache 2[10] JavaScript
Prototype & script. aculo.us[11] Prototype: 1.7.3
22 Sep 2015
script.aculo.us: 1.9.0
23 Dec 2010
46–278 kB MIT JavaScript
qooxdoo 5.0.1
15 Sep 2015
Variable, starting at 6 kB (gzipped) LGPL & EPL JavaScript
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.11.2
2 May 2016
250–700 kb (gzipped). MIT JavaScript
Unified.js 14.0
June 2015
variable about 871 KiB (minified & gzipped) BSD(component only) & Commercial JavaScript
Vue.js 2.1.10
17 Jan 2017
26 kB (minified & gzipped)

71 kB (minified) [12]

219 kB (uncompressed) [13]

MIT JavaScript
Wakanda 9
14 Nov 2014
Variable GPL3 (framework), AGPL (server) & Commercial JavaScript + HTML + CSS
Webix 4.1
November 2016
188 kB (gzipped) GPL & Commercial JavaScript
ZK 8.0.1
19 Jan 2016
Variable LGPL & GPL & ZOL XML + Java (JavaScript optional)

Features[edit]

 v AngularJS DHTMLX Dojo Ember.js Enyo Ext JS Google Web Toolkit jQuery jQWidgets MooTools OpenUI5 Prototype & script. aculo.us[11] qooxdoo SmartClient and SmartGWT SproutCore Unified.js Wakanda ZK Webix
Feature detection[14] Yes No Yes[15] Yes Yes[16] No[17][18] Yes[19] Yes Yes[20] No[21] Yes Partial [22] Yes Yes Partial No[23] Yes
DOM wrapped[24] Yes Yes Yes No Yes Yes Yes Yes No[25] No[26][27] Yes Yes No Yes Yes Yes Yes
XMLHttpRequest
data retrieval
Yes Yes Yes[28] Yes Yes Yes Yes Yes[29] Yes[30] Yes Yes Yes Yes Yes Yes Yes Yes
WebSocket Yes Yes[28] Yes Yes Yes Yes No Yes[30] Yes[31] Yes Yes Yes Via Plugin Yes Yes[32]
Server push data retrieval Yes[33] Yes[34] Yes[35] Yes[33] No Yes[36] Via Plugin Yes[37] Yes[38] Yes
Other data retrieval Yes: XML, CSV, HTML Yes: XML, HTML, CSV, ATOM[39] Yes: XML, SOAP, AMF, Ext.Direct Yes: RPC, RequestFactory Yes: XML, HTML Yes: XML, JSON, CSV, TSV[29] Yes: XML, HTML Yes: XML, WSDL, RSS, and Java-based SQL, Hibernate, POJO adapters Yes: XML, CSV,SSV,[40] JSON(with js plugin) Yes: JSON-RPC, Wakanda REST Yes: XML, HTML, CS, JSON, JSArray, CSV
Drag and drop Yes Yes[41] Yes With plugin[42] Yes[43] Yes[44] Yes[45] Yes Yes Yes Yes Yes Yes Yes Yes[46]
Simple visual effects Yes Yes Yes[47] Yes Yes Yes Yes Yes Yes[48] Yes Yes Yes Yes Yes[49] Yes Yes Yes Yes
Animation /
advanced visual effects
Yes Yes Yes[50] Yes[51] Yes Yes Yes Yes Yes[52] Yes Yes Yes Yes[49] Yes Yes Yes[53]
Back button support /
history management
No Yes[54] Yes Yes[55] Yes[56] Yes With plugins[57] No With plugin[58] Yes Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes Yes no Yes Yes
Input form widgets & validation Yes Yes[59] Yes[60] Yes Yes Yes, Validation requires plugin[61] With plugins[62] Yes[63] Yes Yes Yes Yes Yes Yes No Yes Yes Yes [64] [65]
AngularJS DHTMLX Dojo Ember.js Enyo ExtJS Google Web Toolkit jQuery jQWidgets MooTools OpenUI5 Prototype & script. aculo.us[11] qooxdoo SmartClient and SmartGWT SproutCore Unified.js Wakanda ZK Webix
Grid Yes[66] Yes[67] Yes Yes With plugins[68] Yes[69] With plugin[70] Yes Yes Yes Yes Yes Yes[71] Yes Yes[72]
Hierarchical Tree Yes[73] Yes[74] Yes[75] Yes[76] Yes With plugins[77] Yes[78] With plugins[79] Yes Yes[80] Yes Yes Yes Yes (Auto Form)[81] Yes Yes [82]
Rich text editor No Yes[83] Yes[84] Yes[85] Yes With plugins[86] Yes[87] Yes[88] Yes Yes Via plugin Yes[89] Yes Yes[90]
Autocompletion tools No Yes[91] Yes[92] Yes Yes Yes[93] Yes[94] With plugin[95] Yes Yes With plugins Yes Yes[96] Yes Yes
HTML generation tools No Yes Yes[97] Yes Yes Yes Yes[87] Yes[98] Yes Yes Yes Yes Yes No Yes Yes
Widgets themeable / skinnable Yes Yes[99] Yes Yes[100] Yes[101] Yes[102] Yes Yes Yes Yes Yes Yes Yes Yes
GUI resizable panels and modal dialogs Yes[103] Yes Yes Yes Yes With plugins Yes[104] Yes[105] Yes Yes Yes Yes Yes[106] Yes[107] Yes
GUI page layout Yes[108] Yes Yes Yes With plugin[109] Yes[110][111] Yes[105] Yes Yes Yes Yes Yes[112] Yes[107] Yes [113]
Canvas support Yes Yes[114] Yes Yes Yes With plugin[115] Yes[116] Yes[117] Yes Yes Yes Yes Yes[118] Yes[119] Yes
Mobile/tablet support (touch events) Yes Yes[120] Yes[121] Yes Yes Yes With plugin[122] With plugin[123] Yes[124] With plugin[125] Yes Yes Yes Yes Yes Yes[126][127] Yes[128] Yes[129]
Accessibility /
graceful degradation[130]
Yes No Yes[131] No Yes Yes[132] Yes[133] Yes Yes[134] Yes No[135] Degradation: No
Accessibility: Yes
Degradation: No
Accessibility: Yes
Yes Yes Yes[136]
ARIA compliant No Yes[131] Yes[132] Yes[137] Yes[134] Yes No Yes Yes Yes Yes Yes [138]
Developer tools, Visual design Yes[139] Yes[140][141] in progress[142] Yes[143][144][145] Yes Yes[146][147] Yes[148][149][150] Yes[151][152] Yes[153] Yes No Yes Yes[154] Yes Yes[155][156][157]
Offline storage[158] Yes No[159] Yes Yes[160] Via Google Gears[161] With plugin[162] Yes[163] Yes Yes Yes planned Yes Yes
Cross-browser 2d Vector Graphics[164] Yes[165] Yes With plugin[166] Yes[116] Yes[167] Yes No] Yes Yes (via Raphael) Yes[168] Yes (via Raphael)[169]
Charting & Dashboard[170] Yes[171] Yes[172] Yes[173] With plugin[174][175] Yes[176][177] Yes No Yes Yes[178] Yes[179] Yes[180]
RTL Support in UI Components Yes Yes Yes Depends on the plugin used Yes[134] Yes Yes Yes Yes No

Browser support[edit]

Framework Internet Explorer Mozilla Firefox Safari Opera Chrome
AngularJS (1.3) 8+ (9+) 4+ 5+ 11+ 30+
DHTMLX 6+ 1+ 2.0+ 9+ 1+
Dojo 6+ 3+[181] 4[181] 10.50+[181] 3[181]
Ember.js 6+ 3+ 4+ 10.6+ 14+
Enyo 8+[182] >4[182] >5[182] >10[182]
Ext JS 6+ 3.6+ 4+ 11+ 10+[183]
Google Web Toolkit 8+ 1+ 5+ 9+ 1+
jQuery 6+[184] 2+[184] 3+[184] 9+[184] 1+[184]
jQWidgets 7+[185] 2+[185] 3+[185] 9+[185] 1+[185]
MooTools 6+ 2+ 3+ 9+ 1+
Prototype & script. aculo.us[11] 6+ 1.5+ 2.0.4+ 9.25+ 1+ (starting with 1.6.1RC3)
qooxdoo 6+ 2+ 3+ 9+ 2+
SmartClient and SmartGWT 6+ 1+ 3+ 9+ 1+
SproutCore 6+ 3+ 4+ 9+ 1+
Unified.js 8+ 4+ 5+ 11+ 30+
Wakanda 9+ 4+ 5+ 11+
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.  External link in |website= (help)
  5. ^ "License - Javascript, HTML5, jQuery Widgets". www.jqwidgets.com. Retrieved 2015-12-17. 
  6. ^ [1]
  7. ^ [2]
  8. ^ [3]
  9. ^ "React Minified Library". Cloudflare. CDNJS. Retrieved 19 December 2016. 
  10. ^ https://github.com/SAP/openui5/ OpenUI5 on GitHub
  11. ^ a b c d script.aculo.us is an add-on to Prototype.
  12. ^ "Minified Vue.js Library". CloudFlare. CDNJS. Retrieved 14 February 2017. 
  13. ^ "Vue 2.1.10 uncompressed". Cloudflare CDN. Retrieved 14 February 2017. 
  14. ^ 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
  15. ^ Documentation dojo/has
  16. ^ http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.supports
  17. ^ GWT implementations for every browser
  18. ^ Google Docs (built on GWT) stops working on a Firefox rebranding because of not doing proper Feature Detection
  19. ^ jQuery 1.3
  20. ^ http://mootools.net/blog/2010/10/11/mootools-core-1-3-stable-and-mootools-more-1-3rc/
  21. ^ Feature detection all the way
  22. ^ Author disagrees that feature detection alone is sufficient
  23. ^ http://zssdemo.zkoss.org/zkau/web/js/zk/zk.js.dsp zk.js
  24. ^ kangax (5 April 2010). "What's wrong with extending the DOM". Retrieved 6 April 2010. 
  25. ^ MooTools Docs - Element/Element
  26. ^ Prototype JavaScript framework: Element
  27. ^ Prototype 2.0 will not extend the DOM - Ajaxian
  28. ^ a b AJAX and Dojo
  29. ^ a b "jQuery Data Adapter". www.jqwidgets.com. Retrieved 2015-12-17. 
  30. ^ a b MooTools Request
  31. ^ Simple chat server example using UI5 WebSocket
  32. ^ [4]
  33. ^ a b http://cometd.org/documentation/cometd-javascript
  34. ^ https://github.com/kembuco/extjs-cometd/
  35. ^ https://code.google.com/p/rocket-gwt/wiki/Comet
  36. ^ Real-time Messaging Module
  37. ^ support only the nexacro browser currently
  38. ^ http://books.zkoss.org/wiki/ZK_Developer%27s_Reference/Server_Push
  39. ^ http://docs.dojocampus.org/dojox/data
  40. ^ SSV : special separate value(rs,ds character delimeter) for fast speed parsing
  41. ^ http://docs.dojocampus.org/dojo/dnd
  42. ^ https://code.google.com/p/gwt-dnd/
  43. ^ "jQuery DragDrop Plugin". www.jqwidgets.com. Retrieved 2015-12-17. 
  44. ^ MooTools Drag.Move
  45. ^ Accordion drag & drop
  46. ^ [5]
  47. ^ http://docs.dojocampus.org/dojo/fx/
  48. ^ MooTools Fx.Tween (Simple Transitions)
  49. ^ a b http://showcase.sproutcore.com/#demos/Transition%20Plugins
  50. ^ http://docs.dojocampus.org/dojox/fx/
  51. ^ http://enyojs.com/api/#enyo.Animator
  52. ^ MooTools Fx.Morph (Advanced Transitions)
  53. ^ [6]
  54. ^ http://docs.dojocampus.org/dojo/back
  55. ^ http://enyojs.com/docs/2.4.0/api/#enyo.Router
  56. ^ http://www.sencha.com/products/js/roadmap.php Since v2.2
  57. ^ Address, History, jquery History, History/Remote, jQuery BBQ
  58. ^ MooTools-History
  59. ^ dhtmlxForm
  60. ^ http://docs.dojocampus.org/dijit/form
  61. ^ http://techblog.maydu.eu/?p=7
  62. ^ http://plugins.jquery.com
  63. ^ "jQuery Validator". www.jqwidgets.com. Retrieved 2015-12-17. 
  64. ^ Webix Data Validation
  65. ^ Webix Input form
  66. ^ dhtmlxGrid
  67. ^ http://docs.dojocampus.org/dojox/grid
  68. ^ jqGrid, Ingrid, Flexigrid, SlickGrid, ParamQuery Grid, ShieldUI jQuery Grid
  69. ^ "jQuery Grid, JavaScript Grid, jqxGrid, DataGrid, jQuery DataGrid". www.jqwidgets.com. Retrieved 2015-12-17. 
  70. ^ JxLib Library or phatfusion sortable table plugin or DrasticGrid
  71. ^ Wakanda DataGrid
  72. ^ Webix grid widget
  73. ^ dhtmlxTree
  74. ^ http://docs.dojocampus.org/dijit/Tree
  75. ^ Tree demo
  76. ^ Tree demos
  77. ^ treeview, file_tree_viewer
  78. ^ "jQuery Tree". www.jqwidgets.com. Retrieved 2015-12-17. 
  79. ^ MooTree 2 or JxLib Library or MooTools PowerTools!
  80. ^ http://demo.qooxdoo.org/current/demobrowser/ Demo browser
  81. ^ Wakanda Auto Form
  82. ^ Webix Tree widget
  83. ^ dhtmlxEditor
  84. ^ http://docs.dojocampus.org/dijit/Editor
  85. ^ problems with the HTMLEditor creating XHTML vs the HTML it does now
  86. ^ markitup, jwysiwyg, htmlbox, WYMeditor
  87. ^ a b "jQuery Editor". www.jqwidgets.com. Retrieved 2015-12-17. 
  88. ^ MooEditable
  89. ^ Wakanda WYSIWYG Editor
  90. ^ Webix Rich Text editor
  91. ^ dhtmlxCombo
  92. ^ http://docs.dojocampus.org/dijit/form/ComboBox
  93. ^ http://jqueryui.com/autocomplete/
  94. ^ "jQuery Input, jQuery Auto Complete". www.jqwidgets.com. Retrieved 2015-12-17. 
  95. ^ Digitarald's Autocompleter Plugin
  96. ^ Wakanda Combo Box
  97. ^ 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");
  98. ^ MooTools Elements
  99. ^ SkinBuilder
  100. ^ Community-driven skins, Theme Builder
  101. ^ Skinning GWT controls with style sheets
  102. ^ ThemeRoller
  103. ^ dhtmlxWindows
  104. ^ "jQuery Window". www.jqwidgets.com. Retrieved 2015-12-17. 
  105. ^ a b Using MochaUI Library or JxLib
  106. ^ Wakanda Dialogs
  107. ^ a b http://www.zkoss.org/smalltalks/zkstudio_vedemo/
  108. ^ dhtmlxLayout
  109. ^ [7]
  110. ^ "jQuery Docking Layout". www.jqwidgets.com. Retrieved 2015-12-17. 
  111. ^ "jQuery Splitter". www.jqwidgets.com. Retrieved 2015-12-17. 
  112. ^ Wakanda Container / Layout
  113. ^ Webix Layout
  114. ^ dojo.gfx
  115. ^ jQuery Canvas plugin
  116. ^ a b "jQuery Draw Plugin". www.jqwidgets.com. Retrieved 2015-12-17. 
  117. ^ MochaUI Library
  118. ^ Wakanda Canvas
  119. ^ [8]
  120. ^ DHTMLX Touch
  121. ^ dojox.mobile & dojox.mobile.app
  122. ^ [9]
  123. ^ jQTouch, jQuery Mobile Project
  124. ^ "jQWidgets Mobile Demos". www.jqwidgets.com. Retrieved 2015-12-17. 
  125. ^ MooTools Mobile (unofficial)
  126. ^ Wakanda Navigation View
  127. ^ Wakanda Split View
  128. ^ http://www.zkoss.org/whyzk/Features
  129. ^ [10] Webix mobile/tablet support
  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 [11]
  133. ^ Built-in Accessibility in GWT 1.5 Applications
  134. ^ a b c "jQWidgets Accessibility Overview". www.jqwidgets.com. Retrieved 2015-12-17. 
  135. ^ Qooxdoo's "Extreme JavaScript" paradigm
  136. ^ [12]
  137. ^ jQuery UI has ARIA support
  138. ^ [13]
  139. ^ Visual Designer for DHTMLX
  140. ^ Wavemaker
  141. ^ Aptana Studio
  142. ^ [14]
  143. ^ [15]
  144. ^ Theme Builder
  145. ^ Custom build tool
  146. ^ Netbeans has jQuery support
  147. ^ jQuery API
  148. ^ "Theme Builder for jQWidgets". www.jqwidgets.com. Retrieved 2015-12-17. 
  149. ^ "ßeta - jQWidgets Charts Studio". www.jqwidgets.com. Retrieved 2015-12-17. 
  150. ^ "JSEditor". www.jqwidgets.com. Retrieved 2015-12-17. 
  151. ^ MooTools-core Documentation
  152. ^ MooTools-more Document
  153. ^ Custom build, JS Linker, API generation, Unit test framework, etc.
  154. ^ Wakanda Studio
  155. ^ https://webix.com/snippet/
  156. ^ https://webix.com/skin-builder/
  157. ^ https://webix.com/form-builder/
  158. ^ 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.
  159. ^ o.DojoToolkit.Org/offline says "Dojo Offline is no longer supported after Dojo 1.3"
  160. ^ http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.data.proxy.WebStorage
  161. ^ Google API Libraries for Google Web Toolkit
  162. ^ jQuery HTML5 Storage plugin
  163. ^ "This example shows how to Save/Load the Grid's state.". www.jqwidgets.com. Retrieved 2015-12-17. 
  164. ^ 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
  165. ^ http://docs.dojocampus.org/dojox/gfx
  166. ^ http://keith-wood.name/svg.html jQuery SVG plugin
  167. ^ MooTools ART
  168. ^ http://books.zkoss.org/wiki/Small_Talks/2010/June/How_To_Use_Canvas4Z
  169. ^ https://docs.webix.com/desktop__chart_integration.html#raphaeumllcharts
  170. ^ Some JavaScript libraries include widgets for Charts, Gauges, and other data visualizations.
  171. ^ dhtmlxChart
  172. ^ http://docs.dojocampus.org/dojox/charting
  173. ^ http://dev.sencha.com/deploy/dev/docs/?class=Ext.chart.Chart Chart API
  174. ^ jQuery Flot Plugin
  175. ^ jQuery Visualize Plugin
  176. ^ "jqxChart - javascript chart widget powered by jQuery, HTML5, SVG". www.jqwidgets.com. Retrieved 2015-12-17. 
  177. ^ "jQuery Gauge". www.jqwidgets.com. Retrieved 2015-12-17. 
  178. ^ WakandaChart
  179. ^ [16]
  180. ^ Webix Charts
  181. ^ a b c d http://docs.dojocampus.org/releasenotes/1.4
  182. ^ a b c d http://enyojs.com/docs/platforms
  183. ^ http://www.sencha.com/products/js/
  184. ^ a b c d e http://docs.jquery.com/Browser_Compatibility
  185. ^ a b c d e "jQuery UI Widgets - Help Documentation". www.jqwidgets.com. Retrieved 2015-12-17.