Comparison of JavaScript-based web frameworks: Difference between revisions

Content deleted Content added
Glyphobet (talk | contribs)
adding some jQuery plugins
Undid revision 1303638924 by Cedar101 (talk)
 
(931 intermediate revisions by more than 100 users not shown)
Line 1:
{{Short description|none}}
{{Expand|incomplete table|date=March 2008}}
{{hatnote|For [[Frontend and backend|backend]] JavaScript web frameworks, see {{section link|Comparison of server-side web frameworks|JavaScript}}.}}
{{update|reason=Does not reflect newer libraries or versions made available in the last several years|date=April 2017}}
{{Use dmy dates|date=August 2023}}
 
<!-- ===== *** IMPORTANT NOTE – READ BEFORE ADDING AN ENTRY *** ==== -->
{| class="wikitable"
<!-- All entries that point to non-existent articles or external links will -->
!
<!-- be deleted. Only place entries here that are links to actual Wikipedia -->
![[Dojo Toolkit|Dojo]]
<!-- articles specific to this topic. Write the article first, ensuring to -->
![[Ext (javascript library)|Ext]]
<!-- demonstrate notability (per WP:N). External links, redlinks, substubs, -->
![[Google Web Toolkit|Google Toolkit]]
<!-- non-notable entries or unrelated related will be pruned periodically. -->
![[jQuery]]
<!-- If you have questions, use the talk page. Please try to keep entries -->
![[mochikit]]
<!-- in alphabetical order. Adding unnecessary links or text to any other -->
![[MooTools]]
<!-- section (such as the "References" section) will also be removed. -->
![[Prototype JavaScript Framework|Prototype]]
<!-- ====================================================================== -->
![[Qooxdoo]]
This is a comparison of [[web framework]]s for [[front-end web development]] that are reliant on [[JavaScript]] code for their behavior.
![[Rico (Ajax)|Rico]]
 
![[scriptaculous]]
==General information==
![[Yahoo! UI Library|Yahoo! UI]]
 
{|class="wikitable sortable" style="font-size:90%;"
|-
! Framework
|{{rh}}|Version described<br/>on this page
! Version<br>compared
|1.0.2
! Size
|2.0<br/>4 Dec 2007
! License
|1.4.61<br/>2 Nov 2007
! Source language
|1.2.3
|1.3.1<br/>29 Apr 2006
|1.11<br>16 Jan 2008
|1.6.0.2<br/>25 Jan 2008
|0.7.3<br/>15 Jan 2008
|2.0
|1.8.1
|2.5.1
|-
!{{rh}}|[[Angular (web framework)|Angular]]
|{{rh}}|Size required to<br/>run in browser
|<!-- Version --> 14.0.4<br />{{nowrap|29 June 2022}}
|18-276&nbsp;KB
|<!-- Size --> {{nowrap|563 kB}} (minified & compressed)
|84-502&nbsp;KB
|<!-- License --> {{free|[[MIT License|MIT]]}}
|variable
|[[TypeScript]]
|29-94&nbsp;KB
|32-200&nbsp;KB
|121&nbsp;KB
|46-137&nbsp;KB
|
|
|2-141&nbsp;KB
|variable; large
|-
|!{{rh}}|License[[AngularJS]]
|<!-- Version --> 1.5.0<br />{{nowrap|5 Feb 2016}}
|[[BSD License|BSD]] & [[Academic Free License|AFL]]
|<!-- Size --> {{nowrap|144 kB}} (minified & compressed)
|[[LGPL]]
|<!-- License --> {{free|[[ApacheMIT License|MIT]]}}
|<!-- Language --> JavaScript
|[[MIT License|MIT]] & [[GPL]]
|[[MIT License|MIT]] & [[Academic Free License|AFL]]
|[[MIT License]]
|[[MIT License]]
|[[LGPL]] & [[Eclipse Public License|EPL]]
|[[Apache License]]
|[[MIT License]]
|[[BSD License]]
|-
!{{rh}}|[[Apache Royale]]
!colspan=12 | features
|<!-- Version --> 0.9.4<br />{{nowrap|5 Nov 2018}}
|<!-- Size --> {{nowrap|19 kB}} (zipped)
|<!-- License --> {{free|[[Apache License|Apache]]}}
|<!-- Language --> ActionScript 3, MXML, CSS
|-
!{{rh}}|[[Backbone.js]]
!{{rh}} | XMLHTTPRequest<br/>data retrieval
|<!-- Version --> 1.2.1<br />{{nowrap|June 2015}}
|{{yes}}
|<!-- Size --> {{nowrap|7.3 kB}} (Packed and gzipped)
|
|<!-- License --> {{free|[[MIT License|MIT]]}}
|{{yes}}
|<!-- Language --> JavaScript
|{{yes}}
|{{yes}}
|{{yes}}
|{{yes}}
|{{yes}}
|{{yes}}
|
|{{yes}}
|-
!{{rh}} | [[JSONDojo Toolkit|Dojo]] data retrieval
|<!-- Version --> 1.10.4<br />{{nowrap|18 Jan 2015}}
|
|<!-- Size --> Variable. <br />Base size: <br />{{nowrap|41 kB}} (minified & gzipped), <br />{{nowrap|155 kB}} (minified), <br />{{nowrap|598 kB}} (uncompressed)<ref>[http://www.dojotoolkit.org/downloads Dojo Base] {{webarchive|url=https://web.archive.org/web/20091128013649/http://www.dojotoolkit.org/downloads/ |date=28 November 2009 }}</ref>
|
|<!-- License --> {{free|[[BSD License|BSD]] & [[Academic Free License|AFL]]}}
|
|<!-- Language -->[[JavaScript]] + HTML
|
|{{yes}}
|{{yes}}
|{{yes}}
|
|
|
|-
!{{rh}} | Drag and drop[[Ember.js]]
|<!-- Version --> 1.7.0<br />{{nowrap|19 Aug 2014}}
|{{yes}}
|<!-- Size --> {{nowrap|95 kB}} (minified & gzipped), <br />{{nowrap|340 kB}} (minified), <br />{{nowrap|1.5 MB}} (uncompressed)
|
|<!-- License --> {{free|[[MIT License|MIT]]}}
|
|<!-- Language --> JavaScript
|
|{{yes}}
|{{yes}}
|
|{{yes}}
|{{yes}}
|
|{{yes}}
|-
!{{rh}}|[[Enyo (software)|Enyo]]
!{{rh}} |Simple visual effects
|<!-- Version --> 2.0.1<br />{{nowrap|30 Aug 2012}}
|{{yes}}
|<!-- Size --> {{nowrap|<25 kB}} (core gzipped)
|
|<!-- License --> {{free|[[Apache 2 License|Apache 2]]<ref>{{cite web |url=http://enyojs.com/about/#License |title=About Enyo JS |website=enyojs.com |access-date=2014-11-23}}</ref>}}
|
|<!-- Language --> JavaScript
|{{yes}}
|-
|{{yes}}
!{{rh}}|[[Ext (JavaScript library)|Ext JS]]
|{{yes}}
|<!-- Version -->7.3<br />15 Sept, 2020
|
|<!-- Size --> {{nowrap|84–502 kB}}
|
|<!-- License --> [[GPL v3|GPL]] & Commercial<ref>{{cite web |url=http://www.sencha.com/products/license.php |title=Ext JS 7.3.0 Licensing |website=sencha.com |access-date=2020-11-05 |archive-url=https://web.archive.org/web/20110109190444/http://www.sencha.com/products/license.php |archive-date=9 January 2011 |url-status=dead }}</ref>
|{{yes}}
|<!-- Language --> JavaScript
|{{yes}}
|-
|{{yes}}
!{{rh}}|[[Google Web Toolkit]]
|<!-- Version -->2.10.0<br />{{nowrap|June 2022}}
|<!-- Size --> Variable
|<!-- License --> {{free|[[Apache License|Apache]]}}
|<!-- Language --> Java
|-
!{{rh}}|[[jQuery]] (library)
|<!-- Version -->3.6.0<br />{{nowrap|3 Mar 2021}}
|<!-- Size -->{{nowrap|70.7KB}} (slim, minified), <br />{{nowrap|87.4KB}} (minified),<ref name="jquery CDN files">{{cite web|title=jQuery Core - All Versions|url=https://code.jquery.com/jquery/|url-status=live|access-date=22 March 2021|website=jQuery|archive-url=https://web.archive.org/web/20130809042048/http://code.jquery.com/jquery/ |archive-date=9 August 2013 }}</ref> <br />{{nowrap|282 KiB}} (uncompressed)<ref name="jquery CDN files"/>
|<!-- License --> {{free|[[MIT License|MIT]]}}
|<!-- Language --> JavaScript
|-
!{{rh}}|[[jQWidgets]]
|<!-- Version --> 3.9.1<br />{{nowrap|29 Oct 2015}}
|<!-- Size --> {{nowrap|3102 KB}} (minified), <br />{{nowrap|7486 KB}} (uncompressed)
|<!-- License --> [[Creative Commons license|Creative Commons Attribution-NonCommercial 3.0]] and Commercial<ref>{{cite web |url=http://www.jqwidgets.com/license/ |title=License - Javascript, HTML5, jQuery Widgets |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- Language --> JavaScript, HTML, CSS
|-
!{{rh}}|[[Knockout (web framework)|Knockout]]
|<!-- Version --> 3.5.0<br />{{nowrap|22 February 2019}}
|<!-- Size --> 66.4 KB minified / 309 KB (development mode)
|<!-- License --> {{free|[[MIT License|MIT]]}}
|<!-- Language --> JavaScript
|-
!{{rh}}|[[MooTools]]
|<!-- Version --> 1.6.0<br />{{nowrap|14 Jan 2016}}
|<!-- Size --> Variable; <br />{{nowrap|7.3–65 KiB}} {{nowrap|([[YUI Library#Build tools|YUI Compressor]])}},<ref>{{cite web|url=http://mootools.net/core/builder|title=MooTools Core Builder|website=mootools.net}}</ref>
<br /><!-- Size --> Variable; <br />{{nowrap|7.3–65 KiB}} {{nowrap|([[YUI Library#Build tools|YUI Compressor]])}},<ref>{{cite web|url=http://mootools.net/more/builder|title=MooTools More Builder|website=mootools.net}}</ref> <br />{{nowrap|101 KiB}} (uncompressed)<ref>{{cite web|url=http://mootools.net/download|title=MooTools Core|website=mootools.net}}</ref>
|<!-- License --> {{free|[[MIT License|MIT]]}}
|<!-- Language --> JavaScript
|-
!{{rh}}|[[Prototype JavaScript Framework|Prototype]] & [[script.aculo.us|script. aculo.us]]<ref name="addon">script.aculo.us is an add-on to Prototype.</ref>
|<!-- Version --> Prototype: 1.7.3<br />{{nowrap|22 Sep 2015}} <br />script.aculo.us: 1.9.0<br />{{nowrap|23 Dec 2010}}
|<!-- Size --> {{nowrap|46–278 kB}}
|<!-- License --> {{free|[[MIT License|MIT]]}}
|<!-- Language --> JavaScript
|-
!{{rh}}|[[qooxdoo]]
|<!-- Version --> 5.0.1<br />{{nowrap|15 Sep 2015}}
|<!-- Size --> Variable, starting at {{nowrap|6 kB}} (gzipped)
|<!-- License --> {{free|[[LGPL]] & [[Eclipse Public License|EPL]]}}
|<!-- Language --> JavaScript
|-
!{{rh}}|[[React (JavaScript library)|React]]
|<!-- Version --> 18.2.0<br />14 June 2022
|<!-- Size --><br />react.production.min.js 6.41KB
react-dom.production.min.js 92.4KB
 
'''Total: 98.81KB'''
|<!-- License --> {{free|[[MIT License|MIT]]}}
|<!-- Language --> JavaScript / TypeScript
|-
!{{rh}}|SAP [[OpenUI5]]
|<!-- Version -->1.102.1<br />{{nowrap|15 Jun 2022}}
|<!-- Size -->Variable, starting at 213 kB (gzipped)
|<!-- License --> {{free|[[Apache 2 License|Apache 2]]}}<ref>{{cite web | url=https://github.com/SAP/openui5/ | title=OpenUI5 | publisher=GitHub | access-date=22 December 2020 }}</ref>
|<!-- Language --> JavaScript
|-
!{{rh}}|[[SproutCore]]
|<!-- Version --> 1.11.2<br />{{nowrap|2 May 2016}}
|<!-- Size --> {{nowrap|250–700 kB}} (gzipped).
|<!-- License --> {{free|[[MIT License|MIT]]}}
|<!-- Language --> JavaScript
|-
!{{rh}}|[[Svelte]]
|<!-- Version --> 3.12.1<br />{{nowrap|14 Oct 2019}}
|<!-- Size --> Variable
|<!-- License --> {{free|[[MIT License|MIT]]}}
|<!-- Language --> JavaScript
|-
!{{rh}}|[[Vue.js]]
|<!-- Version --> 2.6.10<br />{{nowrap|20 Mar 2019 }}
|<!-- Size --> 33.5 KB (minified & gzipped)
91.48 KB (minified)<ref name="vue CDN files">{{cite web|url=https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/|title=vue CDN files|website=cdn.jsdelivr|publisher=JSDelivr|access-date=23 April 2019}}</ref>
 
333.46 KB (uncompressed)<ref name="vue CDN files"/>
|<!-- License --> {{free|[[MIT License|MIT]]}}
|<!-- Language --> JavaScript / TypeScript
|-
!{{rh}}|[[Webix]]
|<!-- Version --> 11.0<br />{{nowrap|November 2024}}
|<!-- Size --> 188 kB (gzipped)
|<!-- License -->[[GPL]] & Commercial<ref>{{Cite web |title=JavaScript UI Components Library Webix - Licenses |url=https://webix.com/licenses/ |access-date=2022-06-01 |website=webix.com |language=en}}</ref>
|<!-- Language --> JavaScript
|-
!{{rh}}|[[ZK Framework|ZK]]
|<!-- Version --> 8.0.1 <br />{{nowrap|19 Jan 2016}}
|<!-- Size --> Variable
|<!-- License -->[[LGPL]] & [[GPL]] & ZOL<ref>{{Cite web |title=ZK - Leading Enterprise Java Web Framework |url=http://www.zkoss.org/ |access-date=2022-06-01 |website=ZK - Java Web Framework |language=en}}</ref>
|<!-- Language --> XML + Java (JavaScript optional)
|}
 
== High-level framework comparison ==
JavaScript-based web application frameworks, such as [[React (software)|React]] and [[Vue.js|Vue]], provide extensive capabilities but come with associated trade-offs. These frameworks often extend or enhance features available through native web technologies, such as routing, component-based development, and state management. While native web standards, including [[Web Components]], modern JavaScript APIs like [[Fetch API|Fetch]] and [[ECMAScript Modules|ES Modules]], and browser capabilities like [[Shadow DOM]], have advanced significantly, frameworks remain widely used for their ability to enhance developer productivity, offer structured patterns for large-scale applications, simplify handling edge cases, and provide tools for performance optimization. <ref name=":02">{{Cite book |title=JavaScript Frameworks for Modern Web Development: The Essential Frameworks, Libraries, and Tools to Learn Right Now |isbn=978-1484249949 |last1=Uzayr |first1=Sufyan bin |last2=Cloud |first2=Nicholas |last3=Ambler |first3=Tim |date=November 2019 |publisher=Apress }}</ref><ref name=":12">{{Cite book |title=Building Native Web Components: Front-End Development with Polymer and Vue.js |isbn=978-1484259047 |last1=Rojas |first1=Carlos |date=13 November 2020 |publisher=Apress }}</ref><ref name=":22">{{Cite book |title=Hands-On JavaScript High Performance: Build faster web apps using Node.js, Svelte.js, and WebAssembly |isbn=978-1838821098 |last1=Scherer |first1=Justin |date=28 February 2020 |publisher=Packt Publishing, Limited }}</ref>
 
Frameworks can introduce abstraction layers that may contribute to performance overhead, larger bundle sizes, and increased complexity. Modern frameworks, such as React 18 and Vue 3, address these challenges with features like concurrent rendering, tree-shaking, and selective hydration. While these advancements improve rendering efficiency and resource management, their benefits depend on the specific application and implementation context. Lightweight frameworks, such as [[Svelte]] and [[Preact]], take different architectural approaches, with Svelte eliminating the virtual DOM entirely in favor of compiling components to efficient JavaScript code, and Preact offering a minimal, compatible alternative to React. Framework choice depends on an application’s requirements, including the team’s expertise, performance goals, and development priorities. <ref name=":02" /><ref name=":12" /><ref name=":22" />
 
A newer category of web frameworks, including enhance.dev, Astro, and Fresh, leverages native web standards while minimizing abstractions and development tooling. <ref>{{Cite web |title=Enhance |website=[[GitHub]] |url=https://github.com/enhance-dev }}</ref><ref>{{Cite web |title=Astro framework |website=[[GitHub]] |url=https://github.com/withastro/astro }}</ref><ref>{{Cite web |title=Fresh |website=[[GitHub]] |url=https://github.com/denoland/fresh }}</ref> These solutions emphasize [[progressive enhancement]], [[server-side rendering]], and optimizing performance. Astro renders static HTML by default while hydrating only interactive parts. Fresh focuses on server-side rendering with zero runtime overhead. Enhance.dev prioritizes progressive enhancement patterns using Web Components. While these tools reduce reliance on client-side JavaScript by shifting logic to build-time or server-side execution, they still use JavaScript where necessary for interactivity. This approach makes them particularly suitable for performance-critical and content-focused applications. <ref name=":02" /><ref name=":12" /><ref name=":22" />
 
== Features ==
{| class="wikitable" style="font-size:small;"
!
! {{verth|[[Angular (web framework)|Angular]]}}
! {{verth|[[AngularJS]]}}
! {{verth|[[Apache Royale]]}}
! {{verth|[[Dojo Toolkit|Dojo]]}}
! {{verth|[[Ember.js]]}}
! {{verth|[[Enyo (software)|Enyo]]}}
! {{verth|[[Ext (JavaScript library)|Ext JS]]}}
! {{verth|[[Google Web Toolkit]]}}
! {{verth|[[jQuery]]}}
! {{verth|[[jQWidgets]]}}
! {{verth|[[MooTools]]}}
! {{verth|[[OpenUI5]]}}
! {{verth|[[Prototype JavaScript Framework|Prototype]] & [[script.aculo.us|script. aculo.us]]<ref name="addon" />}}
! {{verth|[[qooxdoo]]}}
! {{verth|[[React (JavaScript library)|React]]}}
! {{verth|[[SproutCore]]}}
! {{verth|[[Svelte]]}}
! {{verth|[[Vue.js|Vue]]}}
! {{verth|[[ZK Framework|ZK]]}}
! {{verth|[[Webix]]}}
|-
!{{rh}}| [[Feature detection (web development)|Feature detection]]<ref>Feature detection is preferred by many to browser sniffing to support future browsers: [http://www.jibbering.com/faq/faq_notes/not_browser_detect.html Browser Detecting (and what to do Instead)], [http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting Feature Detection: State of the Art Browser Scripting], [https://developer.mozilla.org/En/Browser_Feature_Detection Browser Feature Detection] {{Webarchive|url=https://web.archive.org/web/20170710191705/https://developer.mozilla.org/En/Browser_Feature_Detection |date=10 July 2017 }}</ref>
|<!-- Angular -->
|<!-- AngularJS --> {{yes}}
|<!-- Apache Royale -->
|<!-- dojo --> {{yes}}<br/><ref>{{cite web|url=http://dojotoolkit.org/reference-guide/dojo/has.html|title=dojo/has – The Dojo Toolkit - Reference Guide|website=dojotoolkit.org}}</ref>
|<!-- Ember.js --> {{yes}}
|<!-- Enyo -->
|<!-- ExtJS --> {{yes}}<br/><ref name="docs.sencha.com"/>
|<!-- GWT --> {{no}}<br/><ref>{{cite web|url=https://code.google.com/p/google-web-toolkit/source/browse/#svn/trunk/user/src/com/google/gwt/user/client/impl|title=Google Code Archive - Long-term storage for Google Code Project Hosting.|website=code.google.com}}</ref><ref>{{cite web|url=https://www.google.com/support/forum/p/Google+Docs/thread?tid=72fe7b0e15737560&hl=en|archive-url=https://archive.today/20130505035218/http://www.google.com/support/forum/p/Google+Docs/thread?tid=72fe7b0e15737560&hl=en|url-status=dead|archive-date=5 May 2013|title=Google Groups|website=google.com}}</ref>
|<!-- jQuery --> {{yes}}<br/><ref>{{cite web|url=http://docs.jquery.com/Release:jQuery_1.3|title=jQuery 1.3 Released - Official jQuery Blog|first=jQuery Foundation -|last=jquery.org|website=docs.jquery.com|date=14 January 2009 }}</ref>
|<!-- jQWidgets --> {{yes}}
|<!-- MooTools --> {{yes}}<br/><ref>{{cite web|url=http://mootools.net/blog/2010/10/11/mootools-core-1-3-stable-and-mootools-more-1-3rc/|title=MooTools Blog: MooTools Core 1.3 Stable and MooTools More 1.3RC|website=mootools.net}}</ref>
|<!-- OpenUi5 -->
|<!-- proto --> {{no}}<br/><ref>[http://thinkweb2.com/projects/prototype/feature-detection-all-the-way/ Feature detection all the way] {{webarchive|url=https://web.archive.org/web/20090421020449/http://thinkweb2.com/projects/prototype/feature-detection-all-the-way/ |date=21 April 2009 }}</ref>
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
| {{no}}
|<!-- Webix --> {{yes}}
|-
!{{rh}}| DOM wrapped<ref name="kangax">{{cite web |url=http://perfectionkills.com/whats-wrong-with-extending-the-dom/ |title=What's wrong with extending the DOM|author=kangax|date=5 April 2010|access-date=6 April 2010}}</ref>
|<!-- Angular -->
|<!-- AngularJS --> {{yes}}
|<!-- Apache Royale -->
|<!-- dojo --> {{yes}}
|<!-- Ember.js --> {{no}}
|<!-- Enyo --> {{yes}}
|<!-- ExtJS --> {{yes}}
|<!-- GWT --> {{yes}}
|<!-- jQuery --> {{yes}}
|<!-- jQWidgets -->
|<!-- MooTools --> {{no}}<br/><ref>{{cite web|url=http://mootools.net/docs/core/Element/Element|title=MooTools Core Documentation|website=mootools.net}}</ref>
|<!-- OpenUi5 -->
|<!-- proto --> {{no}}<br/><ref>{{cite web|url=http://www.prototypejs.org/api/element|title=Prototype API Documentation - Element (Deprecated URL)|website=prototypejs.org}}</ref><ref>{{cite web|url=http://ajaxian.com/archives/prototype-2-0-will-not-extend-the-dom|title=Prototype 2.0 will not extend the DOM - Ajaxian|website=ajaxian.com|date=17 November 2015 }}</ref>
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{no}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}
|-
!{{rh}}| [[Ajax (programming)|XMLHttpRequest]]<br />data retrieval
|<!-- Angular -->
|<!-- AngularJS --> {{yes}}
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}<br/><ref name="AJAX and Dojo">[http://docs.dojocampus.org/quickstart/ajax AJAX and Dojo] {{webarchive|url=https://web.archive.org/web/20100209042422/http://docs.dojocampus.org/quickstart/ajax |date=9 February 2010 }}</ref>
|<!-- Ember.js -->
|<!-- Enyo --> {{yes}}
|<!-- ExtJS --> {{yes}}
|<!-- GWT --> {{yes}}
|<!-- jQuery --> {{yes}}
|<!-- jQWidgets --> {{yes}}<br/><ref name="jqxDataAdapter">{{cite web |url=http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxdataadapter/jquery-data-adapter.htm |title=jQuery Data Adapter |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- MooTools --> {{yes}}<br/><ref name="MooTools Request">{{cite web|url=http://mootools.net/docs/core/Request/Request|title=MooTools Core Documentation|website=mootools.net}}</ref>
|<!-- OpenUi5 --> {{yes}}
|<!-- proto --> {{yes}}
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK -->
|<!-- Webix --> {{yes}}
|-
!{{rh}}| [[WebSocket]]
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale -->
|<!-- dojo --> {{yes}}<br/><ref name="AJAX and Dojo"/>
|<!-- Ember.js -->
|<!-- Enyo --> {{yes}}
|<!-- ExtJS --> {{yes}}
|<!-- GWT --> {{yes}}
|<!-- jQuery --> {{yes}}
|<!-- jQWidgets --> {{no}}
|<!-- MooTools --> {{yes}}<br/><ref name="MooTools Request"/>
|<!-- OpenUi5 --> {{yes}}<br/><ref>{{cite web|url=http://openui5.blogspot.com/2014/01/simple-chat-server-example-using-ui5.html|title=OpenUI5 Developer: Simple chat server example using UI5 WebSocket|first=Holger|last=Schäfer|date=25 January 2014}}</ref>
|<!-- proto --> {{yes}}
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes| Via Plugin}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK -->
|<!-- Webix --> {{yes}}<br/><ref>{{cite web|url=https://docs.webix.com/desktop__server_faye.html|title=WebSockets (Faye) of Guides, Interacting with the Server Side Webix Docs|website=docs.webix.com|access-date=25 November 2016|archive-url=https://web.archive.org/web/20180803044459/https://docs.webix.com/desktop__server_faye.html|archive-date=3 August 2018|url-status=dead}}</ref>
|-
!{{rh}}| [[Server push]] data retrieval
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale -->
|<!-- dojo --> {{yes}}<br/><ref name="cometd.org">{{cite web |url=http://cometd.org/documentation/cometd-javascript |title=CometD JavaScript &#124; cometd.org |access-date=2010-10-07 |url-status=dead |archive-url=https://web.archive.org/web/20100919030621/http://cometd.org/documentation/cometd-javascript |archive-date=19 September 2010 }}</ref>
|<!-- Ember.js -->
|<!-- Enyo -->
|<!-- ExtJS --> {{yes}}<br/><ref>{{cite web|url=https://github.com/kembuco/extjs-cometd/|title=kembuco/extjs-cometd|website=GitHub|date=8 July 2020 }}</ref>
|<!-- GWT --> {{yes}}<br/><ref>{{cite web|url=https://code.google.com/p/rocket-gwt/wiki/Comet|title=Google Code Archive - Long-term storage for Google Code Project Hosting.|website=code.google.com}}</ref>
|<!-- jQuery --> {{yes}}<br/><ref name="cometd.org"/>
|<!-- jQWidgets --> {{no}}
|<!-- MooTools -->
|<!-- OpenUi5 -->
|<!-- proto -->
|<!-- qooxdoo -->
|<!-- React -->
|<!-- SproutCore -->{{yes| Via Plugin}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}<br/><ref>{{cite web|url=http://books.zkoss.org/wiki/ZK_Developer's_Reference/Server_Push|title=ZK - Leading Enterprise Ajax Solutions}}</ref>
|<!-- Webix --> {{yes}}
|-
!{{rh}}| Other data retrieval
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale --> {{yes| Yes: XML, HTML, CSV, ATOM, AMF, JSON}}
|<!-- dojo --> {{yes| Yes: XML, HTML, CSV, ATOM}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dojox/data |title=Dojox/Data - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090317061859/http://docs.dojocampus.org/dojox/data/ |archive-date=17 March 2009 }}</ref>
|<!-- Ember.js -->
|<!-- Enyo -->
|<!-- ExtJS --> {{yes | Yes: XML, SOAP, AMF, Ext.Direct}}
|<!-- GWT --> {{yes | Yes: RPC, RequestFactory}}
|<!-- jQuery --> {{yes | Yes: XML, HTML}}
|<!-- jQWidgets --> {{yes | Yes: XML, JSON, CSV, TSV}}<br/><ref name="jqxDataAdapter" />
|<!-- MooTools --> {{yes | Yes: XML, HTML}}
|<!-- OpenUi5 -->
|<!-- proto -->
|<!-- qooxdoo -->
|<!-- React -->
|<!-- SproutCore -->
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK -->
|<!-- Webix --> {{yes | Yes: XML, HTML, CS, JSON, JSArray, CSV}}
|-
!{{rh}}| [[Drag and drop]]
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dojo/dnd |title=Dojo/DND - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090406045822/http://docs.dojocampus.org/dojo/dnd |archive-date=6 April 2009 }}</ref>
|<!-- Ember.js -->
|<!-- Enyo -->
|<!-- ExtJS --> {{yes}}
|<!-- GWT --> {{depends| With plugin}}<br/><ref>{{cite web|url=https://code.google.com/p/gwt-dnd/|title=fredsa/gwt-dnd|website=GitHub|date=8 February 2022 }}</ref>
|<!-- jQuery --> {{depends|With plugins}}<br/><ref>{{cite web|url=https://jqueryui.com/draggable/|title=Draggable - jQuery UI|first=JS Foundation -|last=js.foundation|website=jqueryui.com}}</ref>
|<!-- jQWidgets --> {{yes}}<br/><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxdragdrop/jquery-dragdrop-getting-started.htm |title=jQuery DragDrop Plugin |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- MooTools --> {{yes}}<br/><ref>{{cite web|url=http://mootools.net/docs/more/Drag/Drag.Move|title=MooTools More Documentation|website=mootools.net}}</ref>
|<!-- OpenUi5 --> {{yes}}<br/><ref>{{cite web|url=https://openui5.hana.ondemand.com/#test-resources/sap/ui/commons/demokit/Accordion.html|title=OpenUI5 SDK - Demo Kit v2.0|website=openui5.hana.ondemand.com}}</ref>
|<!-- proto --> {{yes}}
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}<br/><ref>{{cite web|url=http://docs.webix.com/datatree__dnd_support.html|title=Drag-and-Drop Support of UI Widgets, Tree Webix Docs|website=docs.webix.com}}</ref>
|-
!{{rh}}| Simple visual effects
|<!-- Angular -->
|<!-- AngularJS --> {{yes}}
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dojo/fx/ |title=Dojo/Fx - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090416192527/http://docs.dojocampus.org/dojo/fx |archive-date=16 April 2009 }}</ref>
|<!-- Ember.js -->
|<!-- Enyo --> {{yes}}
|<!-- ExtJS --> {{yes}}
|<!-- GWT --> {{yes}}
|<!-- jQuery --> {{yes}}
|<!-- jQWidgets --> {{yes}}
|<!-- MooTools --> {{yes}}<br/><ref>{{cite web|url=http://mootools.net/docs/core/Fx/Fx.Tween|title=MooTools Core Documentation|website=mootools.net}}</ref>
|<!-- OpenUi5 --> {{yes}}
|<!-- proto --> {{yes}}
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}<br/><ref name="showcase.sproutcore.com">{{cite web|url=http://showcase.sproutcore.com/#demos/Transition+Plugins|title=Showcase|website=showcase.sproutcore.com}}</ref>
|<!-- Svelte --> {{yes}}<br/><ref>{{cite web|url=https://svelte.dev/docs/svelte/transition|title=transition: • Docs • Svelte}}</ref>
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}
|-
!{{rh}}| Animation / <br /> advanced visual effects
|<!-- Angular -->
|<!-- AngularJS --> {{yes}}
|<!-- Apache Royale -->
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dojox/fx/ |title=Dojox/Fx - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090304002856/http://docs.dojocampus.org/dojox/fx |archive-date=4 March 2009 }}</ref>
|<!-- Ember.js -->
|<!-- Enyo --> {{yes}}<br/><ref>{{cite web|url=http://enyojs.com/api/#enyo.Animator|title=Enyo API Reference|website=enyojs.com|access-date=1 August 2012|archive-date=20 December 2013|archive-url=https://web.archive.org/web/20131220053530/http://enyojs.com/api/#enyo.Animator|url-status=dead}}</ref>
|<!-- ExtJS --> {{yes}}
|<!-- GWT --> {{yes}}
|<!-- jQuery --> {{yes}}
|<!-- jQWidgets --> {{yes}}
|<!-- MooTools --> {{yes}}<br/><ref>{{cite web|url=http://mootools.net/docs/core/Fx/Fx.Morph|title=MooTools Core Documentation|website=mootools.net}}</ref>
|<!-- OpenUi5 -->
|<!-- proto --> {{yes}}
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}<br/><ref name="showcase.sproutcore.com"/>
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}<br/><ref>{{cite web|url=https://docs.webix.com/desktop__animation.html|title=Animation of Guides, Styling and Animation Webix Docs|website=docs.webix.com}}</ref>
|-
!{{rh}}| Back button support / <br /> history management
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale -->
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dojo/back |title=Dojo/Back - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090402140220/http://docs.dojocampus.org/dojo/back |archive-date=2 April 2009 }}</ref>
|<!-- Ember.js --> {{yes}}
|<!-- Enyo --> {{yes}}<br/><ref>{{cite web|url=http://enyojs.com/docs/2.4.0/api/#enyo.Router|title=Enyo API Viewer|website=enyojs.com|access-date=24 April 2014|archive-date=24 March 2016|archive-url=https://web.archive.org/web/20160324004253/http://enyojs.com/docs/2.4.0/api/#enyo.Router|url-status=dead}}</ref>
|<!-- ExtJS --> {{yes}}<br/><ref>{{Cite web |url=http://www.sencha.com/products/js/roadmap.php |title=Since v2.2 |access-date=11 September 2010 |archive-url=https://web.archive.org/web/20101229115415/http://www.sencha.com/products/js/roadmap.php |archive-date=29 December 2010 |url-status=dead }}</ref>
|<!-- GWT --> {{yes}}
|<!-- jQuery --> {{depends|With plugins}}<br/><ref>{{cite web|url=http://www.asual.com/jquery/address/|title=Asual|last=Asual|website=asual.com}}</ref>
|<!-- jQWidgets --> {{no}}
|<!-- MooTools --> {{depends|With plugin}}<br/><ref>{{cite web|url=https://github.com/cpojer/mootools-history|title=cpojer/mootools-history|website=GitHub|date=10 October 2021 }}</ref>
|<!-- OpenUi5 -->
|<!-- proto --> {{yes}}
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}
|-
!{{rh}}| Input form [[Web widget|widgets]] & validation
|<!-- Angular -->
|<!-- AngularJS --> {{yes}}
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dijit/form |title=Dijit/Form - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090403160521/http://docs.dojocampus.org/dijit/form |archive-date=3 April 2009 }}</ref>
|<!-- Ember.js -->
|<!-- Enyo --> {{yes}}
|<!-- ExtJS --> {{yes}}
|<!-- GWT --> {{yes}}:<br/>Validation requires plugin<ref>{{cite web |url=http://techblog.maydu.eu/?p=7/ |archive-url=https://web.archive.org/web/20110720164540/http://techblog.maydu.eu/?p=7%2F |archive-date=20 July 2011 |title=Input Validation with GWT |access-date=2018-10-11 |url-status=dead }}</ref>
|<!-- jQuery --> {{depends|With plugins}}<br/><ref>{{cite web|url=http://plugins.jquery.com|title=jQuery Plugin Registry|first=JS Foundation -|last=js.foundation|website=plugins.jquery.com}}</ref>
|<!-- jQWidgets --> {{yes}}<br/><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxvalidator/index.htm |title=jQuery Validator |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- MooTools --> {{yes}}
|<!-- OpenUi5 --> {{yes}}
|<!-- proto --> {{yes}}
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}<br/><ref>{{cite web|url=https://docs.webix.com/desktop__data_validation.html|title=Data Validation of Guides, Managing Data in a Component Webix Docs|website=docs.webix.com}}</ref><ref>{{cite web|url=https://docs.webix.com/desktop__formatted_text_inputs.html|title=Formatted Text Inputs of UI Controls, Text Webix Docs|website=docs.webix.com}}</ref>
|-
!style="width:15em; font-size:60%;"|
!{{rh}} |Advanced visual effects /<br/>Animation
! {{verth|va=middle|[[Angular (web framework)|Angular]]}}
|{{yes}}
! {{verth|va=middle|[[AngularJS]]}}
|
! {{verth|va=middle|[[Apache Royale]]}}
|
! {{verth|va=middle|[[Dojo Toolkit|Dojo]]}}
|{{yes}}
! {{verth|va=middle|[[Ember.js]]}}
|
! {{verth|va=middle|[[Enyo (software)|Enyo]]}}
|{{yes}}
! {{verth|va=middle|[[Ext (JavaScript library)|ExtJS]]}}
|
! {{verth|va=middle|[[Google Web Toolkit]]}}
|
! {{verth|va=middle|[[jQuery]]}}
|{{yes}}
! {{verth|va=middle|[[jQWidgets]]}}
|
! {{verth|va=middle|[[MooTools]]}}
|{{yes}}
! {{verth|va=middle|[[OpenUI5]]}}
! {{verth|va=middle|[[Prototype JavaScript Framework|Prototype]] & [[script.aculo.us|script. aculo.us]]<ref name="addon" />}}
! {{verth|va=middle|[[qooxdoo]]}}
! {{verth|va=middle|[[React (JavaScript library)|React]]}}
! {{verth|va=middle|[[SproutCore]]}}
! {{verth|va=middle|[[Svelte]]}}
! {{verth|va=middle|[[Vue.js|Vue]]}}
! {{verth|va=middle|[[ZK Framework|ZK]]}}
! {{verth|va=middle|[[Webix]]}}
|-
!{{rh}}| [[Grid (graphic design)|Grid]]
!{{rh}} |Event handling
|<!-- Angular -->
|{{yes}}
|<!-- AngularJS -->
|
|<!-- Apache Royale --> {{yes}}
|
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dojox/grid |title=Dojox/Grid - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090423165855/http://docs.dojocampus.org/dojox/grid |archive-date=23 April 2009 }}</ref>
|{{yes}}
|<!-- Ember.js -->
|{{yes}}
|<!-- Enyo -->
|{{yes}}
|<!-- ExtJS --> {{yes}}
|
|<!-- GWT --> {{yes}}
|
|<!-- jQuery --> {{depends|With plugins}}<br/><ref>{{cite web|url=http://www.trirand.com/blog/|title=jqGrid ShieldUI jQuery Grid}}</ref>
|
|<!-- jQWidgets --> {{yes}}<br/><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxgrid/index.htm |title=jQuery Grid, JavaScript Grid, jqxGrid, DataGrid, jQuery DataGrid |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|
|<!-- MooTools --> {{depends|With plugin}}<br/><ref>{{cite web|url=http://jxlib.org/|title=JxLib Library|access-date=18 November 2008|archive-url=http://webarchive.loc.gov/all/20090218102758/http%3A//jxlib.org//|archive-date=18 February 2009|url-status=dead}} or {{cite web |url=http://www.phatfusion.net/sortabletable/index.htm |publisher=phatfusion |title=sortable table plugin |archive-url=https://web.archive.org/web/20090422131647/http://www.phatfusion.net/sortabletable/index.htm |archive-date=22 April 2009 }} or {{cite web |url=http://www.drasticdata.nl/DDHome.php?m=3 |title=DrasticGrid |access-date=22 May 2009 |archive-date=15 April 2017 |archive-url=https://web.archive.org/web/20170415143921/http://jxlib.org/ |url-status=dead }}</ref>
|{{yes}}
|<!-- OpenUi5 --> {{yes}}
|<!-- proto -->
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}<br/><ref>{{cite web|url=https://webix.com/widget/datatable/|title=JavaScript Table (Grid) Widget – Webix HTML DataTable|website=webix.com}}</ref>
|-
!{{rh}}| [[Tree structure|Hierarchical Tree]]
!{{rh}} |Back button support / <br/> history management
|<!-- Angular -->
|{{yes}}
|<!-- AngularJS -->
|
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dijit/Tree |title=Dijit/Tree - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090509101557/http://docs.dojocampus.org/dijit/Tree |archive-date=9 May 2009 }}</ref>
|
|<!-- Ember.js -->
|
|<!-- Enyo --> {{yes}}<br/><ref>{{cite web|url=http://www.discoversdk.com/knowledge-base/enya-javascript-framework|title=Enyo JavaScript Framework - Example - DiscoverSDK Code Examples}}</ref>
|
|<!-- ExtJS --> {{yes}}<br/><ref>{{cite web|url=https://examples.sencha.com/extjs/7.3.0/|title=Sencha - Ext JS 7.3.0 Examples|website=sencha.com|access-date=5 August 2012|archive-url=https://web.archive.org/web/20140512083051/http://www.sencha.com/products/extjs/examples/#sample-6|archive-date=12 May 2014|url-status=dead}}</ref>
|
|<!-- GWT --> {{yes}}
|
|<!-- jQuery --> {{depends|With plugins}}<br/><ref>{{cite web|url=http://jquery.bassistance.de/treeview/demo/|title=treeview |archive-url=https://web.archive.org/web/20081009033326/http://jquery.bassistance.de/treeview/demo/ |archive-date=9 October 2008}}, {{cite web|url=http://abeautifulsite.net/notebook/58 |archive-url=https://web.archive.org/web/20080718170831/http://abeautifulsite.net/notebook/58 |url-status=dead|title=file_tree_viewer|archive-date=18 July 2008 }}</ref>
|
|<!-- jQWidgets --> {{yes}}<br/><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxtree/index.htm |title=jQuery Tree |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|
|<!-- MooTools --> {{depends|With plugins}}<br/><ref>{{cite web|url=http://sites.google.com/a/mindplay.dk/mootree/|title=mootree|website=sites.google.com|access-date=18 November 2008|archive-date=11 September 2016|archive-url=https://web.archive.org/web/20160911065330/https://sites.google.com/a/mindplay.dk/mootree/|url-status=dead}}</ref>
|{{yes}}
|<!-- OpenUi5 --> {{yes}}
|<!-- proto -->
|<!-- qooxdoo --> {{yes}}<br/><ref>{{Cite web |url=http://demo.qooxdoo.org/current/demobrowser/ |title=Demo browser |access-date=3 October 2008 |archive-url=https://web.archive.org/web/20160402124804/http://demo.qooxdoo.org/current/demobrowser/ |archive-date=2 April 2016 |url-status=dead }}</ref>
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}<br/><ref>{{cite web|url=https://webix.com/widget/treetable/|title=Tree Table or TreeGrid - Webix HTML5 library with jQuery integration|website=webix.com}}</ref>
|-
!{{rh}}| [[Online rich-text editor|Rich text editor]]
!{{rh}} |Input widgets & validation
|<!-- Angular -->
|
|<!-- AngularJS --> {{no}}
|{{yes}}
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dijit/Editor |title=Dijit/Editor - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090416192415/http://docs.dojocampus.org/dijit/Editor |archive-date=16 April 2009 }}</ref>
| [http://docs.jquery.com/Plugins 3 plugins]
|<!-- Ember.js -->
|
|<!-- Enyo -->
|
|<!-- ExtJS --> {{yes}}<br/><ref>{{cite web|url=http://www.sencha.com/forum/showthread.php?23979-HTML-Editor&p=129748#post129748|title=HTML Editor|website=sencha.com}}</ref>
|
|<!-- GWT --> {{yes}}
|
|<!-- jQuery --> {{depends|With plugins}}<br/><ref>[http://markitup.jaysalvat.com/home/ markitup], [https://code.google.com/p/jwysiwyg/ jwysiwyg], [http://remiya.com/cms/projects/jquery-plugins/htmlbox/ htmlbox] {{webarchive|url=https://web.archive.org/web/20090707082332/http://remiya.com/cms/projects/jquery-plugins/htmlbox/ |date=7 July 2009 }}, [http://www.wymeditor.org/en/ WYMeditor] {{webarchive|url=https://web.archive.org/web/20080603155530/http://www.wymeditor.org/en/ |date=3 June 2008 }}</ref>
|
|<!-- jQWidgets --> {{yes}}<br/><ref name="jqxEditor">{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxeditor/index.htm |title=jQuery Editor |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|{{yes}}
|<!-- MooTools --> {{yes}}<br/><ref>{{cite web|url=https://cheeaun.github.com/mooeditable/|title=MooEditable|website=cheeaun.github.com|access-date=19 September 2017|archive-date=1 March 2013|archive-url=https://web.archive.org/web/20130301160627/http://cheeaun.github.com/mooeditable/|url-status=dead}}</ref>
|{{yes}}
|<!-- OpenUi5 -->
|<!-- proto -->
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes|Via plugin}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}<br/><ref>{{cite web|url=https://docs.webix.com/desktop__richtext.html|title=RichText - The RichText control documentation: overview and initialization. Webix Docs|website=docs.webix.com}}</ref>
|-
!{{rh}} | [[Autocomplete|Autocompletion]] tools
|<!-- Angular -->
|
|<!-- AngularJS --> {{no}}
|
|<!-- Apache Royale -->
|
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dijit/form/ComboBox |title=Dijit/Form/ComboBox - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090418063316/http://docs.dojocampus.org/dijit/form/ComboBox |archive-date=18 April 2009 }}</ref>
| [http://docs.jquery.com/Plugins 4 plugins]
|<!-- Ember.js -->
|
|<!-- Enyo -->
|
|<!-- ExtJS --> {{yes}}
|
|<!-- GWT --> {{yes}}
|
|<!-- jQuery --> {{yes}}<br/><ref>{{cite web|url=http://jqueryui.com/autocomplete/|title=Autocomplete - jQuery UI|first=JS Foundation -|last=js.foundation|website=jqueryui.com}}</ref>
|
|<!-- jQWidgets --> {{yes}}<br/><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxinput/index.htm |title=jQuery Input, jQuery Auto Complete |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|
|<!-- MooTools --> {{depends|With plugin}}<br/><ref>{{cite web|url=http://digitarald.de/project/autocompleter/|title=AutoCompleter » digitarald:Harald Kirschner|website=digitarald.de|access-date=25 April 2008|archive-date=23 October 2017|archive-url=https://web.archive.org/web/20171023134913/http://digitarald.de/project/autocompleter/|url-status=dead}}</ref>
|{{yes}}
|<!-- OpenUi5 -->
|<!-- proto --> {{yes}}
|<!-- qooxdoo -->
|<!-- React -->
|<!-- SproutCore --> {{depends|With plugins}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}
|-
!{{rh}} | [[HTML]] generation tools
|<!-- Angular -->
|| || || || || || || || ||
|<!-- AngularJS --> {{no}}
|{{yes}}
|<!-- Apache Royale -->
|
|<!-- dojo --> {{yes}}<br/><ref>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");</ref>
|<!-- Ember.js -->
|<!-- Enyo -->
|<!-- ExtJS --> {{yes}}
|<!-- GWT --> {{yes}}
|<!-- jQuery --> {{yes}}
|<!-- jQWidgets --> {{yes}}<br/><ref name="jqxEditor" />
|<!-- MooTools --> {{yes}}<br/><ref>[http://docs.mootools.net/Element/Element#Element MooTools Elements] {{webarchive|url=https://web.archive.org/web/20080905200158/http://docs.mootools.net/Element/Element/ |date=5 September 2008 }}</ref>
|<!-- OpenUi5 -->
|<!-- proto --> {{yes}}
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}
|-
!{{rh}}| Widgets themeable / skinnable
!{{rh}} |Developer tools
|<!-- Angular -->
|
|<!-- AngularJS -->
|
|<!-- Apache Royale --> {{yes}}
|
|<!-- dhtmlx --> {{yes}}<br/><ref>{{cite web|url=http://www.dhtmlx.com/docs/products/skinBuilder/index.shtml|title=JavaScript UI Library, Ajax Components & HTML5 Framework - Online Skin Builder|first=Dinamenta|last=UAB|website=dhtmlx.com}}</ref>
|
|<!-- Ember.js -->
|{{yes}}
|<!-- Enyo --> {{yes}}
|
|<!-- ExtJS --> {{yes}}<br/><ref>{{cite web|url=http://www.sencha.com/blog/2008/03/03/can-ext-be-skinned-of-course/|title=Blog|date=26 February 2015}}</ref>
|
|<!-- GWT --> {{yes}}<br/><ref>{{cite web|url=https://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.UserInterface.html#StyleSheets|title=Skinning GWT controls with style sheets|access-date=17 March 2015|archive-date=12 September 2008|archive-url=https://web.archive.org/web/20080912071259/http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.UserInterface.html#StyleSheets|url-status=dead}}</ref>
|
|<!-- jQuery --> {{yes}}<br/><ref>{{cite web|url=http://jqueryui.com/themeroller|title=ThemeRoller - jQuery UI|first=JS Foundation -|last=js.foundation|website=jqueryui.com}}</ref>
|
|<!-- MochiKit -->
|
|<!-- MooTools --> {{yes}}
|
|<!-- OpenUi5 --> {{yes}}
|<!-- pyjamas --> {{yes}}
|<!-- Rico -->
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}
|-
!{{rh}}| GUI resizable panels and modal dialogs
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}
|<!-- Ember.js -->
|<!-- Enyo --> {{yes}}
|<!-- ExtJS --> {{yes}}<br/><ref>{{cite web|url=https://www.plerdy.com/blog/top-javascript-frameworks-and-libraries/#14|title=Best JavaScript Frameworks|date=16 September 2019}}</ref>
|<!-- GWT --> {{yes}}
|<!-- jQuery --> {{depends|With plugins}}
|<!-- jQWidgets --> {{yes}}<br/><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxwindow/index.htm |title=jQuery Window |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- MooTools -->{{yes}}<br/><ref name="mochaJxlib">Using [http://mochaui.com/demo/ MochaUI Library] or [http://jxlib.org/ JxLib] {{Webarchive|url=http://webarchive.loc.gov/all/20090218102758/http%3A//jxlib.org// |date=18 February 2009 }}</ref>
|<!-- OpenUi5 -->
|<!-- proto -->
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}<br/><ref name="zkoss.org">{{cite web |url=http://www.zkoss.org/smalltalks/zkstudio_vedemo/ |title=A Sip of WYSIWYG Development with ZK Studio |access-date=2011-04-27 |url-status=dead |archive-url=https://web.archive.org/web/20081012063201/http://www.zkoss.org/smalltalks/zkstudio_vedemo/ |archive-date=12 October 2008 }}</ref>
|<!-- Webix --> {{yes}}
|-
!{{rh}}| GUI page layout
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale -->
|<!-- dojo --> {{yes}}
|<!-- Ember.js -->
|<!-- Enyo -->
|<!-- ExtJS --> {{yes}}
|<!-- GWT --> {{yes}}
|<!-- jQuery --> {{depends|With plugin}}<br/><ref>{{cite web|url=https://code.google.com/p/css-template-layout/|title=Google Code Archive - Long-term storage for Google Code Project Hosting.|website=code.google.com}}</ref>
|<!-- jQWidgets --> {{yes}}<br/><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxdockinglayout/index.htm |title=jQuery Docking Layout |website=jqwidgets.com |access-date=2015-12-17}}</ref><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxsplitter/index.htm |title=jQuery Splitter |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- MooTools -->{{yes}}<br/><ref name="mochaJxlib" />
|<!-- OpenUi5 -->
|<!-- proto -->
|<!-- qooxdoo -->{{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}<br/><ref name="zkoss.org"/>
|<!-- Webix --> {{yes}}<br/><ref>{{cite web|url=https://webix.com/widget/layout/|title=JavaScript layout library Webix for Web Apps Developers|website=webix.com}}</ref>
|-
!{{rh}}| Canvas support
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale --> {{yes}}
|<!-- dojo -->{{yes}}<br/><ref>[http://docs.dojocampus.org/dojox/gfx dojo.gfx] {{webarchive|url=https://web.archive.org/web/20090309234151/http://docs.dojocampus.org/dojox/gfx |date=9 March 2009 }}</ref>
|<!-- Ember.js -->
|<!-- Enyo --> {{yes}}
|<!-- ExtJS -->{{yes}}
|<!-- GWT -->{{yes}}
|<!-- jQuery --> {{depends|With plugin}}<br/><ref>{{cite web|url=http://calebevans.me/projects/jcanvas/index.php|title=jCanvas|website=jCanvas}}</ref>
|<!-- jQWidgets --> {{yes}}<br/><ref name="jqxDraw">{{cite web |url=http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxdraw/jquery-draw-getting-started.htm |title=jQuery Draw Plugin |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- MooTools -->{{yes}}<br/><ref>{{cite web|url=http://ajaxian.com/archives/mocha-ui-mootools-canvas-ui-class|title=Mocha UI – MooTools Canvas UI class - Ajaxian|website=ajaxian.com|date=17 November 2015 }}</ref>
|<!-- OpenUi5 -->
|<!-- proto -->
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}<br/><ref name="zkoss1">{{cite web|url=http://books.zkoss.org/wiki/Small_Talks/2010/June/How_To_Use_Canvas4Z|title=ZK - Leading Enterprise Ajax Solutions}}</ref>
|<!-- Webix --> {{yes}}
|-
!{{rh}}| Mobile/tablet support (touch events)
|<!-- Angular -->
|<!-- AngularJS --> {{yes}}
|<!-- Apache Royale --> {{yes}}
|<!-- dojo -->{{yes}}<br/><ref>{{cite web|url=http://shaneosullivan.wordpress.com/2010/06/13/dojos-new-mobile-app-project/|title=Dojo's new Mobile App Project|date=13 June 2010}}</ref>
|<!-- Ember.js --> {{yes}}
|<!-- Enyo --> {{yes}}
|<!-- ExtJS --> {{yes}}
|<!-- GWT -->{{depends|With plugin}}<br/><ref>{{cite web|url=https://code.google.com/p/jqm4gwt/|title=Google Code Archive - Long-term storage for Google Code Project Hosting.|website=code.google.com}}</ref>
|<!-- jQuery --> {{depends|With plugin}}<br/><ref>{{cite web|url=http://www.jqtouch.com/|title=jQT|website=jQT}}</ref>
|<!-- jQWidgets --> {{yes}}<br/><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/mobiledemos/ |title=jQWidgets Mobile Demos |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- MooTools -->{{depends|With plugin}}<br/><ref>{{cite web|url=https://github.com/cpojer/mootools-mobile|title=cpojer/mootools-mobile|website=GitHub|date=10 October 2021 }}</ref>
|<!-- OpenUi5 --> {{yes}}
|<!-- proto -->
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK -->{{yes}}<br/><ref>{{cite web|url=http://www.zkoss.org/whyzk/Features|title=ZK - Leading Enterprise Java Web Framework|website=ZK - Java Web Framework}}</ref>
|<!-- Webix --> {{yes}}<br/><ref>[https://webix.com/touch/] Webix mobile/tablet support</ref>
|-
!{{rh}}| Accessibility / <br /> graceful degradation<ref>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.</ref>
|<!-- Angular -->
|<!-- AngularJS --> {{yes}}
|<!-- Apache Royale -->
|<!-- dojo --> {{yes}}<br/><ref name="docs.dojocampus.org">{{cite web |url=http://docs.dojocampus.org/quickstart/writingWidgets/a11y |title=Quickstart/WritingWidgets/A11y - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090406005938/http://docs.dojocampus.org/quickstart/writingWidgets/a11y |archive-date=6 April 2009 }}</ref>
|<!-- Ember.js --> {{no}}
|<!-- Enyo --> {{yes}}
|<!-- ExtJS --> {{yes}}<br/><ref name="docs.sencha.com">{{cite web|url=http://docs.sencha.com/extjs/latest|title=Ext JS 7.3.0 - Sencha Docs|website=docs.sencha.com}}</ref>
|<!-- GWT --> {{yes}}<br/><ref>{{cite web|url=https://webtoolkit.googleblog.com/2008/09/built-in-accessibility-in-gwt-15.html|title=Built-in Accessibility in GWT 1.5 Applications}}</ref>
|<!-- jQuery --> {{yes}}
|<!-- jQWidgets --> {{yes}}<br/><ref name="jQWidgetsAccessibility">{{cite web |url=http://www.jqwidgets.com/jquery-widgets-documentation/documentation/accessibility/jqwidgets-accessibility-overview.htm |title=jQWidgets Accessibility Overview |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- MooTools --> {{yes}}
|<!-- OpenUi5 -->
|<!-- proto -->
|<!-- qooxdoo --> {{no}}<br/><ref>[http://codecorps.wordpress.com/2007/04/11/qooxdoo-funny-name-interesting-ajax-toolkit/ Qooxdoo's "Extreme JavaScript" paradigm] {{webarchive|url=https://web.archive.org/web/20081012051826/http://codecorps.wordpress.com/2007/04/11/qooxdoo-funny-name-interesting-ajax-toolkit/ |date=12 October 2008 }}</ref>
|<!-- React -->
|<!-- SproutCore -->{{yes-no| Degradation: No<br />Accessibility: Yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}<br/><ref>{{cite web|url=https://docs.webix.com/desktop__accessibility.html|title=Accessibility of Guides, Designing User Interface Webix Docs|website=docs.webix.com}}</ref>
|-
!{{rh}}| [[WAI-ARIA|ARIA]] compliant
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale -->
|<!-- dojo --> {{yes}}<br/><ref name="docs.dojocampus.org"/>
|<!-- Ember.js -->
|<!-- Enyo -->
|<!-- ExtJS --> {{yes}}<br/><ref name="docs.sencha.com"/>
|<!-- GWT -->
|<!-- jQuery --> {{yes}}<br/><ref>{{cite web|url=http://jqueryui.com/about|title=About jQuery UI - jQuery UI|first=JS Foundation -|last=js.foundation|website=jqueryui.com}}</ref>
|<!-- jQWidgets --> {{yes}}<br/><ref name="jQWidgetsAccessibility" />
|<!-- MooTools -->
|<!-- OpenUi5 --> {{yes}}
|<!-- proto -->
|<!-- qooxdoo --> {{No}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte --> {{yes}}<br/><ref>{{cite web|url=https://svelte.dev/docs/svelte/compiler-warnings#a11y_accesskey|title=Compiler Warnings • Docs • Svelte}}</ref>
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}<br/><ref>{{cite web|url=https://docs.webix.com/desktop__accessibility.html#waiariaattributes|title=Accessibility of Guides, Designing User Interface Webix Docs|website=docs.webix.com}}</ref>
|-
!{{rh}}| Developer tools, Visual design
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale -->
|<!-- dojo --> {{yes}}<br/><ref>[[Wavemaker]]</ref><ref>[[Aptana]] Studio</ref>
|<!-- Ember.js -->
|<!-- Enyo --> {{yes|in progress}}<br/><ref>{{cite web |url=http://developer.palm.com/blog/2012/04/april-code-releases-for-open-webos/ |title=HP webOS Developer Blog |access-date=2012-08-05 |url-status=dead |archive-url=https://web.archive.org/web/20120709053821/http://developer.palm.com/blog/2012/04/april-code-releases-for-open-webos/ |archive-date=9 July 2012 }}</ref>
|<!-- ExtJS --> {{yes}}<br/><ref>{{cite web|url=http://www.sencha.com/products/designer/|title=Sencha Architect|date=25 March 2015}}</ref><ref>{{cite web|url=http://www.sencha.com/blog/2008/04/07/spket-ide-1611-released-includes-new-ext-theme-builder/|title=Blog|date=26 February 2015}}</ref><ref>{{cite web|url=http://www.sencha.com/products/js/build/|title=Sencha Ext JS|date=5 November 2020}}</ref>
|<!-- GWT --> {{yes}}
|<!-- jQuery --> {{yes}}<br/><ref>{{cite web|url=http://netbeans.org/kb/docs/web/js-toolkits-jquery.html|title=Using jQuery to Enhance the Appearance and Usability of a Web Page - NetBeans Tutorial|first=lloyd.dunn @ sun.com|last=troy.giunipero@sun.com|website=netbeans.org|access-date=9 February 2010|archive-date=12 July 2017|archive-url=https://web.archive.org/web/20170712052659/https://netbeans.org/kb/docs/web/js-toolkits-jquery.html|url-status=dead}}</ref><ref>{{cite web|url=http://api.jquery.com/|title=jQuery API Documentation|first=JS Foundation -|last=js.foundation|website=api.jquery.com}}</ref>
|<!-- jQWidgets --> {{yes}}<br/><ref name="jQWidgetsThemeBuilder">{{cite web |url=http://www.jqwidgets.com/themebuilder/ |title=Theme Builder for jQWidgets |website=jqwidgets.com |access-date=2015-12-17}}</ref><ref>{{cite web |url=https://www.jqwidgets.com/chartstudio/ |title=ßeta - jQWidgets Charts Studio |website=jqwidgets.com |access-date=2015-12-17}}</ref><ref>{{cite web |url=https://www.jqwidgets.com/jseditor/ |title=JSEditor |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- MooTools --> {{yes}}<br/><ref>{{cite web|url=http://mootools.net/docs/core|title=MooTools-core Documentation|access-date=14 October 2009|archive-url=https://web.archive.org/web/20091002162608/http://mootools.net/docs/core|archive-date=2 October 2009|url-status=dead}}</ref><ref>{{cite web|url=http://mootools.net/docs/more|title=MooTools-more Document|access-date=14 October 2009|archive-url=https://web.archive.org/web/20091004112249/http://www.mootools.net/docs/more|archive-date=4 October 2009|url-status=dead}}</ref>
|<!-- OpenUi5 -->
|<!-- proto -->
|<!-- qooxdoo --> {{yes}}<br/><ref>[http://qooxdoo.org/about/framework Custom build, JS Linker, API generation, Unit test framework, etc.] {{webarchive|url=https://web.archive.org/web/20080725201346/http://qooxdoo.org/about/framework |date=25 July 2008 }}</ref>
|<!-- React -->
|<!-- SproutCore --> {{no}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{Yes}}<br/><ref>{{cite web|url=https://webix.com/skin-builder/|title=Webix Skin Builder|website=webix.com}}</ref><ref>{{cite web|url=https://webix.com/form-builder/|title=Formbuilder|website=webix.com}}</ref>
|-
!{{rh}}| Offline storage<ref>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 [https://code.google.com/apis/gears/design.html Gears Getting Started Guide].</ref>
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{no}}<br/><ref>[http://o.dojotoolkit.org/offline o.DojoToolkit.Org/offline] {{webarchive|url=https://web.archive.org/web/20100210190309/http://o.dojotoolkit.org/offline |date=10 February 2010 }} says "Dojo Offline is no longer supported after Dojo 1.3"</ref>
|<!-- Ember.js -->
|<!-- Enyo --> {{yes}}
|<!-- ExtJS --> {{yes}}<br/><ref>{{cite web|url=http://docs.sencha.com/extjs/latest/|title=Ext JS 7.3.0 - Sencha Docs|website=docs.sencha.com}}</ref>
|<!-- GWT --> {{depends| Via [[Google Gears]]}}<br/><ref>{{cite web|url=https://code.google.com/p/gwt-google-apis/|title=googlearchive/gwt-google-apis|website=GitHub|date=24 April 2021}}</ref>
|<!-- jQuery --> {{depends|With plugin}}<br/><ref>{{cite web|url=https://sites.google.com/site/daveschindler/jquery-html5-storage-plugin/|title=jQuery HTML5 Storage plugin - daveschindler|website=sites.google.com|access-date=15 October 2012|archive-date=4 March 2017|archive-url=https://web.archive.org/web/20170304153125/https://sites.google.com/site/daveschindler/jquery-html5-storage-plugin/|url-status=dead}}</ref>
|<!-- jQWidgets --> {{yes}}<br/><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxgrid/saveloadstate.htm?arctic |title=This example shows how to Save/Load the Grid's state. |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- MooTools -->
|<!-- Yes -->
|<!-- proto -->
|<!-- qooxdoo --> {{yes}}
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}
|-
!{{rh}}| Cross-browser 2d Vector Graphics<ref>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</ref>
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale -->
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dojox/gfx |title=Dojox/GFX - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090309234151/http://docs.dojocampus.org/dojox/gfx |archive-date=9 March 2009 }}</ref>
|<!-- Ember.js -->
|<!-- Enyo -->
|<!-- ExtJS --> {{yes}}
|<!-- GWT -->
|<!-- jQuery --> {{depends| With plugin}}<br/><ref>[http://keith-wood.name/svg.html jQuery SVG plugin]</ref>
|<!-- jQWidgets --> {{yes}}<br/><ref name="jqxDraw" />
|<!-- MooTools --> {{yes}}<br/><ref>{{cite web|url=https://github.com/kamicane/art|title=kamicane/art|website=GitHub|date=26 February 2021}}</ref>
|<!-- OpenUi5 -->
|<!-- proto -->
|<!-- qooxdoo -->
|<!-- React -->
|<!-- SproutCore --> {{no}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}<br/><ref name="zkoss1"/>
|<!-- Webix --> {{yes}} (via Raphael)<ref>{{cite web|url=https://docs.webix.com/desktop__chart_integration.html#raphaeumllcharts|title=Chart Integration - Third-party charts integration guide. Webix Docs|website=docs.webix.com}}</ref>
|-
!{{rh}}| Charting & Dashboard<ref>Some JavaScript libraries include widgets for Charts, Gauges, and other data visualizations.</ref>
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dojox/charting |title=Dojox/Charting - DojoCampus - Docs |access-date=2009-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20090303111929/http://docs.dojocampus.org/dojox/charting |archive-date=3 March 2009 }}</ref>
|<!-- Ember.js -->
|<!-- Enyo -->
|<!-- ExtJS -->{{yes}}<br/><ref>[https://archive.today/20120709235342/http://dev.sencha.com/deploy/dev/docs/?class=Ext.chart.Chart Chart API]</ref>
|<!-- GWT -->
|<!-- jQuery --> {{depends|With plugin}}<br/><ref>{{cite web|url=http://www.flotcharts.org/|title=Flot: Attractive JavaScript plotting for jQuery|website=flotcharts.org}}</ref><ref>[http://www.filamentgroup.com/lab/jquery_visualize_plugin_accessible_charts_graphs_from_tables_html5_canvas/ jQuery Visualize Plugin] {{webarchive|url=https://web.archive.org/web/20090709085716/http://www.filamentgroup.com/lab/jquery_visualize_plugin_accessible_charts_graphs_from_tables_html5_canvas |date=9 July 2009 }}</ref>
|<!-- jQWidgets --> {{yes}}<br/><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxchart/index.htm |title=jqxChart - javascript chart widget powered by jQuery, HTML5, SVG |website=jqwidgets.com |access-date=2015-12-17}}</ref><ref>{{cite web |url=http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxgauge/index.htm |title=jQuery Gauge |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- MooTools -->
|<!-- OpenUi5 -->
|<!-- proto -->
|<!-- qooxdoo -->
|<!-- React -->
|<!-- SproutCore --> {{no}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK -->{{yes}}<br/><ref>{{cite web|url=http://www.zkoss.org/zkdemo/chart|title=ZK Live Demo - Other Charts|website=Live Demo - ZK Web Application Framework}}</ref>
|<!-- Webix --> {{yes}}<br/><ref>{{cite web|url=https://webix.com/widget/charts/|title=JavaScript Charts UI Widget - Webix JS Charts|website=webix.com}}</ref>
|-
!{{rh}}| RTL Support in UI Components
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}
|<!-- Ember.js -->
|<!-- Enyo -->
|<!-- ExtJS --> {{yes}}
|<!-- GWT -->
|<!-- jQuery --> {{depends|Depends on the plugin used}}
|<!-- jQWidgets --> {{yes}}<br/><ref name="jQWidgetsAccessibility" />
|<!-- MooTools -->
|<!-- OpenUi5 --> {{yes}}
|<!-- proto -->
|<!-- qooxdoo -->
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK -->
|<!-- Webix --> {{no}}
|-
!
! {{verth|va=top|[[Angular (web framework)|Angular]]}}
! {{verth|va=top|[[AngularJS]]}}
! {{verth|va=top|[[Apache Royale]]}}
! {{verth|va=top|[[Dojo Toolkit|Dojo]]}}
! {{verth|va=top|[[Ember.js]]}}
! {{verth|va=top|[[Enyo (software)|Enyo]]}}
! {{verth|va=top|[[Ext (JavaScript library)|ExtJS]]}}
! {{verth|va=top|[[Google Web Toolkit]]}}
! {{verth|va=top|[[jQuery]]}}
! {{verth|va=top|[[jQWidgets]]}}
! {{verth|va=top|[[MooTools]]}}
! {{verth|va=top|[[OpenUI5]]}}
! {{verth|va=top|[[Prototype JavaScript Framework|Prototype]] & [[script.aculo.us|script. aculo.us]]<ref name="addon" />}}
! {{verth|va=top|[[qooxdoo]]}}
! {{verth|va=top|[[React (JavaScript library)|React]]}}
! {{verth|va=top|[[SproutCore]]}}
! {{verth|va=top|[[Svelte]]}}
! {{verth|va=top|[[Vue.js|Vue]]}}
! {{verth|va=top|[[ZK Framework|ZK]]}}
! {{verth|va=top|[[Webix]]}}
|}
 
==Browser support==
[[Category:JavaScript libraries]]
{| class="wikitable sortable"
[[Category:JavaScript programming language]]
|-
[[Category:Software comparisons]]
!Framework
[[Category:Ajax (programming)]]
![[Internet Explorer]]
![[Firefox|Mozilla Firefox]]
![[Safari (web browser)|Safari]]
![[Opera (web browser)|Opera]]
![[Chromium (web browser)|Chrome]]
![[Microsoft Edge|Edge]]
|-
!{{rh}}|[[Angular (web framework)|Angular]]
|<!-- MSIE -->
|<!-- Firefox --> Latest and extended support release
|<!-- Safari --> 2 most recent major versions
|<!-- Opera -->
|<!-- Chrome --> Latest and previous stable version
|<!-- Edge --> 2 most recent major versions
|-
!{{rh}}|[[AngularJS]] (1.3)
|<!-- MSIE --> 8+ (9+)
|<!-- Firefox --> 4+
|<!-- Safari --> 5+
|<!-- Opera --> 11+
|<!-- Chrome --> 30+
|<!-- Edge -->
|-
!{{rh}}|[[Apache Royale]]
|<!-- MSIE --> 9 (Edge --> 10)
|<!-- Firefox --> 21
|<!-- Safari --> 6
|<!-- Opera --> 15
|<!-- Chrome --> 23
|<!-- Edge -->
|-
!{{rh}}|[[Dojo Toolkit|Dojo]]
|<!-- MSIE --> 6+
|<!-- Firefox --> 3+<ref name="ReferenceA">{{cite web |url=http://docs.dojocampus.org/releasenotes/1.4 |title=Releasenotes/1.4 - DojoCampus - Docs |access-date=2009-12-17 |url-status=dead |archive-url=https://web.archive.org/web/20100208101206/http://docs.dojocampus.org/releasenotes/1.4 |archive-date=8 February 2010 }}</ref>
|<!-- Safari --> 4<ref name="ReferenceA"/>
|<!-- Opera --> 10.50+<ref name="ReferenceA"/>
|<!-- Chrome --> 3<ref name="ReferenceA"/>
|<!-- Edge -->
|-
!{{rh}}|[[Ember.js]]
|<!-- MSIE --> 6+
|<!-- Firefox --> 3+
|<!-- Safari --> 4+
|<!-- Opera --> 10.6+
|<!-- Chrome --> 14+
|<!-- Edge -->
|-
!{{rh}}|[[Enyo (software)|Enyo]]
|<!-- MSIE --> 8+<ref name="platforms.enyojs.com">{{cite web |url=http://enyojs.com/docs/platforms |title=Supported Platforms &#124; Enyo JS |access-date=2012-07-26 |url-status=dead |archive-url=https://web.archive.org/web/20120723164041/http://enyojs.com/docs/platforms/ |archive-date=23 July 2012 }}</ref>
|<!-- Firefox --> >4<ref name="platforms.enyojs.com"/>
|<!-- Safari --> >5<ref name="platforms.enyojs.com"/>
|<!-- Opera -->
|<!-- Chrome --> >10<ref name="platforms.enyojs.com"/>
|<!-- Edge -->
|-
!{{rh}}|[[Ext (JavaScript library)|Ext JS]]
|<!-- MSIE --> 8+
|<!-- Firefox --> 45+
|<!-- Safari --> 11+
|<!-- Opera --> 43+
|<!-- Chrome --> 64+<ref>{{cite web|url=http://www.sencha.com/products/extjs/|title=Sencha Ext JS|date=5 November 2020}}</ref>
|<!-- Edge -->
|-
!{{rh}}|[[Google Web Toolkit]]
|<!-- MSIE --> 8+
|<!-- Firefox --> 1+
|<!-- Safari --> 5+
|<!-- Opera --> 9+
|<!-- Chrome --> 1+
|<!-- Edge -->
|-
!{{rh}}|[[jQuery]] (3.x)
|<!-- MSIE --> 6+ (9+)<ref name="docs.jquery.com">{{cite web|url=http://docs.jquery.com/Browser_Compatibility|title=Browser Support - jQuery|first=JS Foundation -|last=js.foundation|website=docs.jquery.com}}</ref>
|<!-- Firefox --> 2+<ref name="docs.jquery.com"/>
|<!-- Safari --> 3+<ref name="docs.jquery.com"/>
|<!-- Opera --> 9+<ref name="docs.jquery.com"/>
|<!-- Chrome --> 1+<ref name="docs.jquery.com"/>
|<!-- Edge -->
|-
!{{rh}}|[[jQWidgets]]
|<!-- MSIE --> 7+<ref name="jQWidgetsDocumentation">{{cite web |url=http://www.jqwidgets.com/jquery-widgets-documentation/ |title=jQuery UI Widgets - Help Documentation |website=jqwidgets.com |access-date=2015-12-17}}</ref>
|<!-- Firefox --> 2+<ref name="jQWidgetsDocumentation" />
|<!-- Safari --> 3+<ref name="jQWidgetsDocumentation" />
|<!-- Opera --> 9+<ref name="jQWidgetsDocumentation" />
|<!-- Chrome --> 1+<ref name="jQWidgetsDocumentation" />
|<!-- Edge -->
|-
!{{rh}}|[[MooTools]]
|<!-- MSIE --> 6+
|<!-- Firefox --> 2+
|<!-- Safari --> 3+
|<!-- Opera --> 9+
|<!-- Chrome --> 1+
|<!-- Edge -->
|-
!{{rh}}|[[Prototype JavaScript Framework|Prototype]] & [[script.aculo.us|script. aculo.us]]<ref name="addon" />
|<!-- MSIE --> 6+
|<!-- Firefox --> 1.5+
|<!-- Safari --> 2.0.4+
|<!-- Opera --> 9.25+
|<!-- Chrome --> 1+ (starting with 1.6.1RC3)
|<!-- Edge -->
|-
!{{rh}}|[[qooxdoo]]
|<!-- MSIE --> 6+
|<!-- Firefox --> 2+
|<!-- Safari --> 3+
|<!-- Opera --> 9+
|<!-- Chrome --> 2+
|<!-- Edge -->
|-
!{{rh}}|[[React (JavaScript library)|React]]
|<!-- MSIE -->
|<!-- Firefox -->
|<!-- Safari -->
|<!-- Opera -->
|<!-- Chrome -->
|<!-- Edge -->
|-
!{{rh}}|SAP [[OpenUI5]]<ref>{{Cite web|title=OpenUI5SDK - Demo Kit|url=https://openui5.hana.ondemand.com/topic/74b59efa0eef48988d3b716bd0ecc933|access-date=2021-03-22|website=openui5.hana.ondemand.com}}</ref>
|<!-- MSIE -->11+
|<!-- Firefox -->Latest Stable and ESR
|<!-- Safari -->Last 2
|<!-- Opera -->
|<!-- Chrome
-->Latest Version
|<!-- Edge -->
|-
!{{rh}}|[[SproutCore]]
|<!-- MSIE --> 6+
|<!-- Firefox --> 3+
|<!-- Safari --> 4+
|<!-- Opera --> 9+
|<!-- Chrome --> 1+
|<!-- Edge -->
|-
!{{rh}}|[[Svelte]]
|<!-- MSIE -->
|<!-- Firefox --> 21+
|<!-- Safari --> 6+
|<!-- Opera --> 15+
|<!-- Chrome --> 23+
|<!-- Edge -->12+
|-
!{{rh}}|[[Vue.js|Vue]]
|<!-- MSIE -->10+
|<!-- Firefox -->21+
|<!-- Safari -->6+
|<!-- Opera -->15+
|<!-- Chrome -->23+
|<!-- Edge -->12+
|-
!{{rh}}|[[ZK Framework|ZK]]
|<!-- MSIE --> 6+
|<!-- Firefox --> 2.0+
|<!-- Safari --> 3+
|<!-- Opera --> 9+
|<!-- Chrome --> 2+
|<!-- Edge -->
|-
!{{rh}}|[[Webix]]
|<!-- MSIE --> 11+<ref name="webix.com">{{cite web|url=https://docs.webix.com/desktop__compatibility.html|title=Compatibility Webix Docs|website=docs.webix.com}}</ref>
|<!-- Firefox --> 93+<ref name="webix.com"/>
|<!-- Safari --> 5+<ref name="webix.com"/>
|<!-- Opera --> 95+<ref name="webix.com"/>
|<!-- Chrome --> 95+<ref name="webix.com"/>
|<!-- Edge --> 95+<ref name="webix.com"/>
|}
 
==Notes==
{{software-stub}}
{{Reflist}}
 
{{Web frameworks}}
{{ECMAScript}}
{{JavaScript}}
 
{{DEFAULTSORT:Comparison of Javascript Frameworks}}
[[Category:JavaScript libraries|*]]
[[Category:Software comparisons|JavaScript frameworks]]
[[Category:Ajax (programming)]]
[[Category:Web development]]
[[Category:Web frameworks]]
[[Category:JavaScript web frameworks]]