Future Technologies Conference (FTC) 2017
29-30 November 2017| Vancouver, Canada
structure their code from their point of view. This often leads
non-experienced developers to write unstructured, unreadable
and non-reusable code because they do not have to consider
good application structure when using Knockout. Still, it pro-
vides the functionality of listening to events, binding callbacks
and DOM changing elements (add, remove or update) based
on users input values. Knockout supports most of the major
browsers (Internet Explorer 6+, Firefox 2+, Chrome, Opera
and Safari). It is an MVVM (Model-View-ViewModel) library
for creating dynamic UIs [2].
B. Backbone
Backbone (also known as BackboneJS) was developed by
Jeremy Ashkenas and initially released in October 2010 for
implementing single-page web applications. Backbone serves
as an effective ORM (Object Relational Mapping) for RESTful
APIs. It is based on the MVP (Model-View-Presenter) appli-
cation design paradigm and is a light-weight framework that
depends only on the JavaScript Library [3]. BitTorrent.com,
Airbnb, Hulu, LinkedIn Mobile, Pinterest and Reddit are
built using Backbone. The downside of Backbone is that it
requires writing an extensive amount of code that is mostly
for integrating components, that are ready-made in Knockout
and Angular with a few attributes. This can be considered as
a limitation from the development point of view. However,
it can be considered as an advantage where there will be no
hidden configurations behind the scenes, therefore being more
understandable and explicitly coded. Moreover, Backbone is
easier in debugging and fixing several performance issues.
In general, Backbone is recommended for DOM (Document
Object Model i.e. HTML objects) manipulations.
C. AngularJS
As part of a commercial product, AngularJS was first
launched in 2009 under the name of ‘GetAngluar’ which was
later sponsored by Google due to its great perceived benefits.
For instance, a web application using GetAngular that consists
of around 1,000 lines and 3 weeks of development, would
take -without GetAngular- up to 17,000 lines and around
6 months of development. Later, Google re-introduced it as
the currently known open-source AngularJS [4]. Similar to
Knockout, AngularJS leaves HTML readable by supporting
data binding into the DOM. In addition, AngularJS supported
integrated data validation and introduced an array of controllers
(and services) for building single-page applications. AngularJS
combined the ideas of Backbone and Knockout and brought
custom components via custom directives which made Angular
much popular. It also brought common pattern from OOP
which is the ‘Dependency Injection’ container. Moreover,
AngularJS introduced the concept of MV* or MVW (Model
View Whatever) [5] due to the fact that AngularJS combined
the ‘Controller’ and the ‘View’ into one single container that
handles both functionalities.
However, over time and due to many refactoring and
API improvements, its now closer to MVVM (Model View
ViewModel) paradigm [6] where the $scope object could be
considered as the ViewModel that is being decorated by a
function known as a ‘Controller’. Angular’s modular structure,
strict development guidelines and ability to simply bind di-
rectly to plain objects, all enhance the efficiency of the coding
by preventing many issues, and providing a strong architectural
foundation for the application. Therefore, we believe that these
reasons have enforced the position of AngularJS as one of
the most recent readable and maintainable web developing
frameworks. Moreover, AngularJS provides an unpreceded
strong community support to respond to users’ enquiries, bug
detection and problem-solving which offers vast opportunities
for bug fixes within next releases.
D. React
React was released by Facebook in March 2013 as a light-
weight application platform. However, React should not be
considered as a framework [1] but should be rather considered
as a library. One of its key features is that it is quite efficient
in rendering UI (User Interface). React is often paired with
AngularJS to deliver applications of high-speed performance
and richer presented content. Plus, React code supports cross-
platform with mobile applications, through using extra li-
braries. Another feature is React’s documentation which is
useful and rich of information, facilitating coding.
Most of React projects were written in ES2015 which is
ahead of browsers supporting it. ES2015 is a pseudonym for
the latest version of the JavaScript programming language to
be approved by ECMA International, the standards group for
vetting and approving different versions of the language. The
term ES2015 was given because the latest version of JavaScript
is identified as the 2015 version of ECMAScript (an alternative
term for JavaScript). Up until recently, ES2015 was previously
referred to as ES6.
In comparison with AngularJS, React needs more lines to
do what AngularJS can handle in much fewer lines. React
has a key feature which is the ‘virtual DOM’. The virtual
DOM is a light approach for updating DOM with new changes
without affecting the performance. This is done by working
with a light-weight copy of the original DOM then comparing
with the re-rendered what should be changed optimally (using
‘dirty checking’ or ‘observable’). Also, React does not need a
browser to test as it does not interact with the real DOM [7].
React uses JSX [8] as the programming language which is
an extension to JavaScript that has XML-like syntax. Accord-
ingly, it helps to implement the business logic and functions of
a component all in the same file where the HTML template is.
This approach makes React components completely isolated
and reusable [9]. Since React is a library, it is essential to
use a number of more libraries with it to fill the gaps and
build a complete application with all necessary operations
(such as routing, enforcing unidirectional flows, web API calls,
dependency management and testing). For example, Redux
[10] can be used to provide a single-state container that all
such components in the application can access and manipulate
[11].
E. Angular
Released in September 2016, ‘Angular2’ or ‘Angular 2+’ is
commonly referred to as Angular. Angular is a revolutionary
version and a complete rewrite of AngularJS 1.x frameworks.
Being much less complicated than Angular1, Angular uses
ES2015 and ES2016 in addition to ‘Typescript’ as a com-
piler, which supports classes and module loaders. When first
929 | P a g e