Content deleted Content added
add web framework template |
Undid revision 1303638924 by Cedar101 (talk) |
||
(71 intermediate revisions by 45 users not shown) | |||
Line 1:
{{
{{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=
<!-- ===== *** IMPORTANT NOTE – READ BEFORE ADDING AN ENTRY *** ==== -->
Line 13 ⟶ 14:
<!-- section (such as the "References" section) will also be removed. -->
<!-- ====================================================================== -->
This is a comparison of [[web framework]]s for [[front-end web development]] that are
==General information==
{|class="wikitable sortable" style="font-size:90%;"
|-
! Framework
! Version
! Size
! License
! Source language
|-
!{{rh}}|[[Angular (
|<!-- Version -->
|<!-- Size --> {{nowrap|563 kB}} (minified & compressed)
|<!-- License --> {{free|[[MIT License|MIT]]}}
|
|-
!{{rh}}|[[AngularJS]]
Line 63 ⟶ 65:
|<!-- Version --> 2.0.1<br />{{nowrap|30 Aug 2012}}
|<!-- Size --> {{nowrap|<25 kB}} (core gzipped)
|<!-- License --> {{free|[[Apache 2 License|Apache 2]]
|<!-- Language --> JavaScript
|-
!{{rh}}|[[Ext (JavaScript library)|Ext JS]]
|<!-- Version -->7.3<br />15 Sept, 2020
|<!-- Size --> {{nowrap|84–502 kB}}
|<!-- License --> [[GPL v3|GPL]] & Commercial
|<!-- Language --> JavaScript
|-
!{{rh}}|[[Google Web Toolkit]]
|<!-- Version -->
|<!-- Size --> Variable
|<!-- License --> {{free|[[Apache License|Apache]]}}
Line 85 ⟶ 81:
|-
!{{rh}}|[[jQuery]] (library)
|<!-- Version -->3.6.0<br />{{nowrap|
|<!-- 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|
|<!-- License --> {{free|[[MIT License|MIT]]}}
|<!-- Language --> JavaScript
Line 107 ⟶ 103:
<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
|-
Line 145 ⟶ 115:
|<!-- 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
|-
Line 162 ⟶ 147:
|<!-- Version --> 2.6.10<br />{{nowrap|20 Mar 2019 }}
|<!-- Size --> 33.5 KB (minified & gzipped)
91.48 KB (minified)
333.46 KB (uncompressed)
|<!-- License --> {{free|[[MIT License|MIT]]}}
|<!-- Language --> JavaScript / TypeScript
|-
!{{rh}}|[[Webix]]
|<!-- Version -->
|<!-- Size --> 188 kB (gzipped)
|<!-- License -->
|<!-- Language --> JavaScript
|-
Line 183 ⟶ 162:
|<!-- Version --> 8.0.1 <br />{{nowrap|19 Jan 2016}}
|<!-- Size --> Variable
|<!-- License -->
|<!-- 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|[[
! {{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
|<!-- Ember.js --> {{yes}}
|<!-- Enyo -->
|<!-- ExtJS --> {{yes}}<br/><ref
|<!-- 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 -->
Line 241 ⟶ 230:
|<!-- 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}}
Line 261 ⟶ 251:
|<!-- 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}}
Line 283 ⟶ 274:
|<!-- 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=
|<!-- 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 -->
Line 308 ⟶ 300:
|<!-- 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=
|<!-- Ember.js -->
|<!-- Enyo -->
Line 324 ⟶ 317:
|<!-- 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=
|<!-- 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=
|<!-- Ember.js -->
|<!-- Enyo --> {{yes}}
Line 367 ⟶ 362:
|<!-- 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=
|<!-- 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=
|<!-- 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=
|<!-- Ember.js -->
|<!-- Enyo --> {{yes}}
|<!-- ExtJS --> {{yes}}
|<!-- GWT --> {{yes}}
|<!-- 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}}
|-
!style="width:15em; font-size:60%;"|
! {{verth|va=middle|[[Angular (web framework)|Angular]]}}
! {{verth|va=middle|[[AngularJS]]}}
! {{verth|va=middle|[[Apache Royale]]}}
! {{verth|va=middle|[[Dojo Toolkit|Dojo]]}}
! {{verth|va=middle|[[Ember.js]]}}
! {{verth|va=middle|[[Enyo (software)|Enyo]]}}
! {{verth|va=middle|[[Ext (JavaScript library)|ExtJS]]}}
! {{verth|va=middle|[[Google Web Toolkit]]}}
! {{verth|va=middle|[[jQuery]]}}
! {{verth|va=middle|[[jQWidgets]]}}
! {{verth|va=middle|[[MooTools]]}}
! {{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]]
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dojox/grid |title=
|<!-- Ember.js -->
|<!-- Enyo -->
|<!-- ExtJS --> {{yes}}
|<!-- GWT --> {{yes}}
|<!-- jQuery --> {{depends|With plugins}}<br/><ref>{{cite web|url=http://www.trirand.com/blog/|title=jqGrid
|<!-- 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>
|<!-- 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]]
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dijit/Tree |title=
|<!-- 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>
|<!-- 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}}
|-
!{{rh}}| [[Online rich-text editor|Rich text editor]]
|<!-- Angular -->
|<!-- AngularJS --> {{no}}
|<!-- Apache Royale --> {{yes}}
|<!-- dojo --> {{yes}}<br/><ref>{{cite web |url=http://docs.dojocampus.org/dijit/Editor |title=
|<!-- 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>
|<!-- 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>
|<!-- 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=
|<!-- 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>
|<!-- OpenUi5 -->
|<!-- proto --> {{yes}}
|<!-- qooxdoo -->
|<!-- React -->
|<!-- SproutCore --> {{depends|With plugins}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}
|-
!{{rh}}| [[HTML]] generation tools
|<!-- Angular -->
|<!-- AngularJS --> {{no}}
|<!-- 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 -->
Line 555 ⟶ 559:
|<!-- 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
|<!-- 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 -->
|<!-- 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}}
Line 581 ⟶ 586:
|<!-- pyjamas --> {{yes}}
|<!-- Rico -->
|<!-- React -->
|<!-- SproutCore --> {{yes}}
|<!-- Svelte -->
|<!-- Vue -->
|<!-- ZK --> {{yes}}
|<!-- Webix --> {{yes}}
|-
!{{rh}}| GUI resizable panels and modal dialogs
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale --> {{yes}}
Line 594 ⟶ 600:
|<!-- 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 -->
Line 617 ⟶ 624:
|<!-- 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 -->
|<!--
|<!-- 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>
|<!--
|-
!{{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=
|<!-- 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 -->{{ |<!-- 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}}
|-
!{{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=
|<!-- 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
|<!-- 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
|<!-- 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 -->
|<!--
|<!-- 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=
|<!-- 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 -->
|<!--
|<!-- 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=
|<!-- Ember.js -->
|<!-- Enyo -->
|<!-- ExtJS -->{{yes}}<br/><ref>[https://archive.today/20120709235342/http://dev.sencha.com/deploy/dev/docs/?class=Ext.chart.Chart Chart API]
|<!-- 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 -->
|<!--
|<!--
|-
!{{rh}}| RTL Support in UI Components
|<!-- Angular -->
|<!-- AngularJS -->
|<!-- Apache Royale --> {{yes}}
Line 807 ⟶ 823:
|<!-- 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]]}}
|}
Line 825 ⟶ 863:
!Framework
![[Internet Explorer]]
![[Firefox|Mozilla Firefox]]
![[Safari (web browser)|Safari]]
![[Opera (web browser)|Opera]]
![[Chromium (
![[
|-
!{{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)
Line 849 ⟶ 895:
!{{rh}}|[[Dojo Toolkit|Dojo]]
|<!-- MSIE --> 6+
|<!-- Firefox --> 3+<ref name="ReferenceA">{{cite web |url=http://docs.dojocampus.org/releasenotes/1.4 |title=
|<!-- Safari --> 4<ref name="ReferenceA"/>
|<!-- Opera --> 10.50+<ref name="ReferenceA"/>
Line 864 ⟶ 910:
|-
!{{rh}}|[[Enyo (software)|Enyo]]
|<!-- MSIE --> 8+<ref name="platforms.enyojs.com">{{cite web |url=http://enyojs.com/docs/platforms |title=
|<!-- Firefox --> >4<ref name="platforms.enyojs.com"/>
|<!-- Safari --> >5<ref name="platforms.enyojs.com"/>
Line 876 ⟶ 922:
|<!-- Safari --> 11+
|<!-- Opera --> 43+
|<!-- Chrome --> 64+<ref>{{cite web|url=http://www.sencha.com/products/extjs/|title=Sencha Ext JS|date=5
|<!-- Edge -->
|-
Line 925 ⟶ 971:
|<!-- Opera --> 9+
|<!-- Chrome --> 2+
|<!-- Edge -->
|-
!{{rh}}|[[React (JavaScript library)|React]]
|<!-- MSIE -->
|<!-- Firefox -->
|<!-- Safari -->
|<!-- Opera -->
|<!-- Chrome -->
|<!-- Edge -->
|-
Line 959 ⟶ 1,013:
|<!-- Chrome -->23+
|<!-- Edge -->12+
|-
!{{rh}}|[[ZK Framework|ZK]]
Line 977 ⟶ 1,023:
|-
!{{rh}}|[[Webix]]
|<!-- MSIE -->
|<!-- Firefox -->
|<!-- Safari -->
|<!-- Opera -->
|<!-- Chrome -->
|<!-- Edge --> 95+<ref name="webix.com"/>
|}
Line 992 ⟶ 1,038:
{{JavaScript}}
{{DEFAULTSORT:Comparison
[[Category:JavaScript libraries|*]]
[[Category:Software comparisons|JavaScript frameworks]]
|