Which HTML 5 framework for my app?
Comparison of frameworks using only HTML, JavaScript and CSS, to build applications.
They allow to avoid paid services like the AppStore and to produce applications and games for all the computers and phones. Disney bought in March 2011 the Finnish company Rocket Pack for producing such multi-platform games, proof that it sees a great future in HTML 5.
These frameworks are compatible with mobile phones and are supported by Android, iOS, Firefox OS, Windows Phone, and others... They may then be complemented with Cordova on the backend to access sensors such as the accelerometer. Or PhoneGap, or Intel's XDK.
A study made a benchmark on five frameworks supporting data binding. The result is that Angular is the fastest, followed by Knockout, React, Mithril, Vue.js. Ember is the slowest. However, the order of difficulty of use is different.
Angular.js (by Google/Frozen)
While others have chosen to describe the interface in JavaScript and HTML code generation, this framework the contrary, describes the application entirely in HTML.
It extends HTML for Web applications to a more complete markup language, with new attributes. This is a template system, in fact, it is inspired by Web Components to do this.
This is an alternative to Ember, Backbone or Spine, thus a way to bind data to the user interface and as Ember, CanJS, it can do it in two-ways.
The advantages of Angular over Ember is on module support both in HTML or JavaScript, debugging aid. Another advantage is that 70% of Google applications use Angular, one expects it to be reliable.
Among the drawbacks, insufficient documentation, features added daily as in PHP without a whole vision and sometimes incompatible, but this could be fixed in the version 2.
Angular 2.0 uses the TypeScript programming language, which is compiled to JavaScript.
The framework sees its support ended on December 31, 2021. It will continue to work but without new versions in the future.
- AngularJS. It is used by several Google' sites including DoubleClick.
- Egghead.io. Tutorials for Angular on the form of videos, useful for beginners.
- Angular UI. Widgets for Angular such as Calendar, Google Maps...
- Angular vs Ember. A comparison by a founder of Ember, maybe not objective, but useful to highligth the differences.
- The image at right is made with Dangle, a graphical tool based on Angular and D3.
React.js (by Facebook)
Another alternative to Angular (but they may be used together), React was developed by Facebook to create the graphical interface of Web applications which often reuse the same components. It uses JSX, a derivative of XML to describe the interface elements. The framework builds an internal representation of DOM, Virtual DOM, that allows updates faster and even avoids the use of data binding. It can be used in conjunction with other frameworks such as Backbone.
Unlike other frameworks in this list, it is based on the principle of "reactive programming", in which sequential assignment is replaced by a definition of mathematical type, so when a = b + c, the value of "a" depends on that of "b" and "c" even after the definition and after further changes of value for b and c. This allows to describe interactions more intuitively. But reactive programming here is rudimentary and falls back to use JavaScript events.
So the interest of React is mostly in the virtual DOM, because we do the same thing as in pure JS was a longer and more complicated code.
Starting from version 16.8 the framework introduces the Hook, a state declaration which facilitates interaction with server data.
Among the users of React are Netflix, Uber, AirBnb, etc...
Vue.js
Another alternative to JQuery, React, Angular, which has the advantage of simplicity. We can already use it in production after a few hours of learning. It has a template system but can also use JSX like React. Is compatible with Flux and like React has a virtual DOM. Faster than React, simpler than Angular or Ember.
Will be the chosen framework if you want to start faster and an easier maintenance, a faster app, while Angular and React offer more features. It is described by the authors themselves as a tool to solve common and simple problems, but is not enough by itself for others.
- Vue.js. Download and overview.
Backbone.js
The Backbone.UI framework adds to Backbone widgets to design the interface of an application. The look is as simplistic than the code is simple, but you can improve it through CSS. In fact these components are redundant for many to HTML tags, such as buttons, maybe to facilitate data binding.
- Backbone.js. Requires either jQuery of Zepto.
Ember.js
Ember is a MVC (Model View Controller) JavaScript framework for HTML apps. The site lacks documentation but you can find one elsewhere. There is a lot of similar frameworks, including CanJS et Backbone which is better documented and has more extensions, but some interesting features missing. Both can work with Node.js but Backbone is more relevant to that purpose.
- Emberjs.com. Requires jQuery and and set of widgets for the UI, such as Bootstrap for example.
- First app with Ember.
Polymer.js (replaced by Lit)
Framework proposed by Google, to solve the problem of the complexity of Web applications. This vague objective leads to better modularity and encapsulation of application components. The object orientation moved to application level. You should also be able to write the minimum code to make the application.
This so-called components here are new tags with interaction or data-binding preset. It goes beyond Angular, another project from Google, adding new attributes to HTML with automatic databinding, because Polymer is based on a new backend.
It is the practical application of Web Components principle, the classic combination of JavaScript with HTML tags to create elements of the application, is replaced by a set of predefined components. For example, instead of JavaScript added to a textarea to create an editor, we include a predefined editor component based on the backend provided by Polymer.
- Lit. Replaces polymer.
- X-tags. Similar project from Mozilla, which already has a repository of ready to use components.
FOAM (By Google)
"Features Oriented Active Modeller" is Google's answer to Facebook React. This is a JavaScript reactive framework with model, view, controller. It can generate code in any programming language. The data model is the basis of the application made with Foam.
WinJS from Microsoft
A framework that can be used with Cordova, Angular, etc ... Provides data binding and many features. Works with keyboard, mouse, touch screen. The application can run locally on Windows 10 or online.
- WinJS. The code is on GitHub.
Overture.js from Fastmail
The JS Framework that is used by Fastmail was proprietary but became an open source project in December 2014. It allows to build any sort of web application. The fluidity of Fastmail shows the speed of the framework. It is a descendant of SproutCore as Ember.
MIT license.
Popcorn.js
API of video functions in JavaScript to add actions to the <video> tag. Developed by Mozilla, the API manages synchronization between the sequence of video and user action. Including the ability to move around the content.
Processing.js
Works with the visual graphic language with the same name, on top of Canvas to make animations and produce graphics online.
The code in processing language is converted to JavaScript and uses a runtime to be included in the page. There is no particular advantage in syntax of processing, only graphics functions.
React Canvas
Using Canvas as a display surface for text and widgets, this framework eliminates the use of DOM and accelerates applications. This is best suited for graphic applications, however.
Pdf.js
A PDF document can be viewed in HTML 5 and in particular using Canvas for graphics. It can be used as a plugin on Firefox, but the ultimate goal is to make a PDF reader built into the browser.
Two.js, Paper.js
Library of 2D functions with animation. It can serve as a replacement to animated gif, providing it is made of simple images, with the advantage of the vector, and so small files to include. And an alternative to Flash too, this is the impression we have in seeing the demos!
Paper.js is also a vectorial drawing framework, it allows to create business animations in Canvas. It is based on a scripting tool for Illustrator.
More libraries
- Knocktout. Similar to react, brings data binding to interfaces and has the advantage to be lightweight.
- Brick. By Mozilla, add new HTML 5 tags (like Angular, Polymer and compatible with them) to get new component of web app interface such as slider, flip, etc...
- HTML5 Media. Add support to video and audio tags to all browsers.
- If you want to present a real-time graph to show the evolution of something like CPU usage, for example, the Smoothie library is ready to be included in the page. The code is very simple and fast. CPU usage is not a good example actually as the tool uses itself of lot of CPU! Explorer Canvas is required for IE.
- Kendo UI. Complete library for building professional-looking GUIs based on jQuery, HTML 5 and CSS 3.
- Mylar. If you are looking for security and privacy, MIT offers this set of client-server tools based on Meteor, which store all the data encrypted.
- Visualisation frameworks. List of visualisation tools such as graphs, timelines, networks, etc...