SlideShare a Scribd company logo
1 of 44
JavaScript MV*
Frameworks
By Mitesh Gandhi - MetaSys Software
Outline
• MV* Patterns
• Big Four Frameworks
• Framework Comparison:
– Dependencies
– Data Binding
– Routers
– Views
– Testing
Mitesh Gandhi - MetaSys Software
Outline …
• Framework Comparison:
– Data
– Community
– Third Party Integration
– Development Tools
• React
• React vs AngularJS
• Guide Lines
Mitesh Gandhi - MetaSys Software
Outline …
• Principle of Natural Fit
• Team Adaptability & Learning Curve
Mitesh Gandhi - MetaSys Software
MV* Patterns
Mitesh Gandhi - MetaSys Software
MVW (Modal-View-Whatever)
Mitesh Gandhi - MetaSys Software
Big Four Frameworks
AngularJS Knockout Backbone Ember
Developed /
Maintained
Brat Tech LLC,
Google and
community
Steve
Sanderson
Jeremy
Ashkenas
Yehuda Katz
Design
Paradigm
MVW MVVM MVP MVC
Year
Released
2009 2010 2010 2011
Current
Stable
Release
1.4.7 /
Sep. 29, 2015.
3.3.0 /
Feb. 18, 2015
1.2.3 /
Sep. 03, 2015
2.1.0 /
Oct. 4, 2015
File Size 144 kb 21 kb 22.5 kb 427 kb
License MIT MIT MIT MIT
Website angularjs.org knockoutjs.com backbonejs.org emberjs.com
Mitesh Gandhi - MetaSys Software
Comparison - Dependencies
Framework Dependencies
AngularJS No Dependencies
Knockout No Dependencies
Backbone - Underscore.js
- jQuery
Ember - Handlebars
- jQuery
Mitesh Gandhi - MetaSys Software
Comparison – Data Binding
Mitesh Gandhi - MetaSys Software
• Process that establishes a connection
between the application UI (User
Interface) and business logic
Comparison – Data Binding …
• Data-binding is fully
supported
• Models use standard
JSON properties (e.g.
car.color = "red";)
• Provides Option for
Creating custom
bindings
Mitesh Gandhi - MetaSys Software
Comparison – Data Binding …
• Data-binding is fully
supported
• Data can be bind into
many attributes like
text, value, options,
enable etc..
• Provides Option for
Creating custom
bindings
Mitesh Gandhi - MetaSys Software
Comparison – Data Binding …
• Data-binding is not
supported by default.
• There are plugins
available to support
Data-binding
Mitesh Gandhi - MetaSys Software
Comparison – Data Binding …
• Data-binding is fully supported
• Models use getters and setters but the
binding is automatically and better than
Backbone.
Mitesh Gandhi - MetaSys Software
Comparison – ROUTERS
Mitesh Gandhi - MetaSys Software
• Used for routing your applications URL's
when using hash tags(#)
• Maps an url to a javaScript function
Comparison – ROUTERS …
• Router is very simple
Mitesh Gandhi - MetaSys Software
/person/12/101
Comparison – ROUTERS …
• Knockout does not support routing by
default
• Still Routing is easily configurable by
following third party libraries
Mitesh Gandhi - MetaSys Software
Comparison – ROUTERS …
• Routing is very simple
Mitesh Gandhi - MetaSys Software
/person/12/101
Comparison – ROUTERS …
• Router is extremely capable, but very
complex
• Supported embedded routes
Mitesh Gandhi - MetaSys Software
/person/12/101
Comparison – Views
Mitesh Gandhi - MetaSys Software
• How the stuffs are displayed in the screen
Comparison – Views …
• Uses HTML as templating language
• Automatically pulls in HTML templates via
AJAX when needed
Mitesh Gandhi - MetaSys Software
Comparison – Views …
• Uses HTML as templating language
Supports
• Native templates
– Using default control flow bindings
• String based templates
– Third-party template engine
Mitesh Gandhi - MetaSys Software
Comparison – Views …
• Simple and straight forward.
• Easy for developer with JQuery and DOM
skills
• Simply extend Backbone.View, grab an
element and put stuff in it
• No Official Templating, but easy to add
using
Mitesh Gandhi - MetaSys Software
Comparison – Views …
• Extensive view type support
• Very easy to create re-usable components
• Handlebars are used for templating
Mitesh Gandhi - MetaSys Software
Comparison – Testing
Mitesh Gandhi - MetaSys Software
• Support for testing application
Comparison – Testing …
• Fantastic test support.
• Designed from the beginning to be easy to
test.
• Karma developed by Angular JS team is
popular test runner
Mitesh Gandhi - MetaSys Software
Comparison – Testing …
• As of now, no default debugging tools
• Functions like Console.log(), ko.toJSON()
helps debugging process
• Can use following third party solutions
Mitesh Gandhi - MetaSys Software
Comparison – Testing …
• No default test solution;
• Test it your own
• Can use following third party solutions
Mitesh Gandhi - MetaSys Software
Comparison – Testing …
• Poor testing initially
• Pretty good testing support now
Mitesh Gandhi - MetaSys Software
Comparison – Data
Mitesh Gandhi - MetaSys Software
• How do I get data from the sever?
Comparison – Data …
• No JQuery
• Can do with Angular’s $http but much better
using $resource
• Very good API
Mitesh Gandhi - MetaSys Software
Comparison – Data …
• Uses JQuery’s $.ajax
• Uses knockout mapping plugin
• Maps JavaScript object into a view model
with the appropriate observables
Mitesh Gandhi - MetaSys Software
Comparison – Data …
• Uses JQuery’s $.ajax to power Backbone.
• Default behavior is relatively easy to
override
• Nothing is free in Backbone. Backbone
gives you some useful events to listen for
and lets you handle it yourself. But you
must wire up all the data binding yourself.
Mitesh Gandhi - MetaSys Software
Comparison – Data …
• Uses JQuery’s $.ajax under the covers
• Just “getting data” is relatively easy to do e.g.
Mitesh Gandhi - MetaSys Software
• Doing things the “Ember way” is a bit more
complex
Comparison – Community
Mitesh Gandhi - MetaSys Software
Metric AngularJS Backbone.js Ember.js Knockout
Stars on
Github
40.2k 18.8k 14.1k 6.8k
Third-Party
Modules
1488
ngmodules
256
backplugs
1155
emberaddons
208
npmjs & GitHub
StackOverflow
Questions
104k 18.2k 15.7k 14.8K
YouTube
Results
~93k ~10.6k ~9.1k ~17.6 K
GitHub
Contributors
96 265 501 61
Chrome
Extension
Users
275k 15.6k 66k 29.7k
Open Issues 922 13 413 188
Closed Issues 5,520 2,062 3,350 1,145
Comparison – Community…
Mitesh Gandhi - MetaSys Software
Google Trends
Interest Over Time – Web Search – Worldwide – Aug. 2011 to Oct. 2015
Comparison – Community /
Documentation
Mitesh Gandhi - MetaSys Software
Comparison – Third Party
Integration
Mitesh Gandhi - MetaSys Software
Comparison – Development
Tools
Mitesh Gandhi - MetaSys Software
• An open-source JavaScript Library
released in 2013.
• Maintained by Facebook, Instagram and
the open source community.
• Built as a component for Facebook to
quickly update dynamic content
• Around 30,000 stars on its Github page
• Specific version for iOS development
called React Native
esh Gandhi - MetaSys Software
React
• Most performant way to
manage your DOM
• Specifically when using
large sets of data
• Implements one-way
reactive data flow
• Considered to only be the
view
• Library
AngularJS
• Primary goal
SinglePageApplication
• Load New content without
leaving the page
• Two-way data binding
• MVW
• Framework
Mitesh Gandhi - MetaSys Software
• Following are just guidelines and one
should not treat them like line carved in
stone. They are meant to be bent as
required.
Mitesh Gandhi - MetaSys Software
Principle of Natural Fit
• Some libraries are natural fit for certain
tasks.
• For example, Backbone.js apparent
choice for RESTful JSON applications.
• Frameworks like Angular, Backbone are
good choice for building Single Page
Applications.
Mitesh Gandhi - MetaSys Software
Team Adaptability &
Learning Curve
• Especially in case of rapid prototyping, it
helps development teams to select
libraries with less learning curve and
easier adaption.
• Library like Knockout or Kendo UI is easier
to catch on for WPF or Silverlight
developers as their philosophy is based
on same MVVM pattern.
Mitesh Gandhi - MetaSys Software
Thank You!
Mitesh Gandhi - MetaSys Software

More Related Content

What's hot

SGCE 2012 Lightning Talk-Single Page Interface
SGCE 2012 Lightning Talk-Single Page InterfaceSGCE 2012 Lightning Talk-Single Page Interface
SGCE 2012 Lightning Talk-Single Page InterfaceDomingo Suarez Torres
 
Get Hip with JHipster - Denver JUG 2015
Get Hip with JHipster - Denver JUG 2015Get Hip with JHipster - Denver JUG 2015
Get Hip with JHipster - Denver JUG 2015Matt Raible
 
Transforming Front-End Disaster Code™ Into A Maintainable Masterpiece
Transforming Front-End Disaster Code™ Into A Maintainable MasterpieceTransforming Front-End Disaster Code™ Into A Maintainable Masterpiece
Transforming Front-End Disaster Code™ Into A Maintainable MasterpieceDan Gribbin
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Rich Web Experie...
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Rich Web Experie...Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Rich Web Experie...
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Rich Web Experie...Matt Raible
 
Testing Angular 2 Applications - HTML5 Denver 2016
Testing Angular 2 Applications - HTML5 Denver 2016Testing Angular 2 Applications - HTML5 Denver 2016
Testing Angular 2 Applications - HTML5 Denver 2016Matt Raible
 
jQuery Chicago 2014 - Next-generation JavaScript Testing
jQuery Chicago 2014 - Next-generation JavaScript TestingjQuery Chicago 2014 - Next-generation JavaScript Testing
jQuery Chicago 2014 - Next-generation JavaScript TestingVlad Filippov
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015Matt Raible
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Jeremy Likness
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015Matt Raible
 
Getting Started with Angular - Stormpath Webinar, January 2017
Getting Started with Angular - Stormpath Webinar, January 2017Getting Started with Angular - Stormpath Webinar, January 2017
Getting Started with Angular - Stormpath Webinar, January 2017Matt Raible
 
Automated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceAutomated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceMatthew Lancaster
 
Get Hip with JHipster - Colorado Springs OSS Meetup April 2016
Get Hip with JHipster - Colorado Springs OSS Meetup April 2016Get Hip with JHipster - Colorado Springs OSS Meetup April 2016
Get Hip with JHipster - Colorado Springs OSS Meetup April 2016Matt Raible
 
OSGi and JavaScript - Simon Kaegi
OSGi and JavaScript - Simon KaegiOSGi and JavaScript - Simon Kaegi
OSGi and JavaScript - Simon Kaegimfrancis
 
Interoperability of components built with different frameworks
Interoperability of components built with different frameworksInteroperability of components built with different frameworks
Interoperability of components built with different frameworksSouvik Basu
 
Javascript Frameworks Comparison
Javascript Frameworks ComparisonJavascript Frameworks Comparison
Javascript Frameworks ComparisonDeepu S Nath
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Matt Raible
 
React JS Belgium Touch Base - React, Flux, React Native
React JS Belgium Touch Base - React, Flux, React NativeReact JS Belgium Touch Base - React, Flux, React Native
React JS Belgium Touch Base - React, Flux, React NativePhilos.io
 
The Art of Angular in 2016 - Devoxx UK 2016
The Art of Angular in 2016 - Devoxx UK 2016The Art of Angular in 2016 - Devoxx UK 2016
The Art of Angular in 2016 - Devoxx UK 2016Matt Raible
 
Front-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewFront-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewDiacode
 

What's hot (20)

SGCE 2012 Lightning Talk-Single Page Interface
SGCE 2012 Lightning Talk-Single Page InterfaceSGCE 2012 Lightning Talk-Single Page Interface
SGCE 2012 Lightning Talk-Single Page Interface
 
Get Hip with JHipster - Denver JUG 2015
Get Hip with JHipster - Denver JUG 2015Get Hip with JHipster - Denver JUG 2015
Get Hip with JHipster - Denver JUG 2015
 
Transforming Front-End Disaster Code™ Into A Maintainable Masterpiece
Transforming Front-End Disaster Code™ Into A Maintainable MasterpieceTransforming Front-End Disaster Code™ Into A Maintainable Masterpiece
Transforming Front-End Disaster Code™ Into A Maintainable Masterpiece
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Rich Web Experie...
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Rich Web Experie...Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Rich Web Experie...
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Rich Web Experie...
 
Testing Angular 2 Applications - HTML5 Denver 2016
Testing Angular 2 Applications - HTML5 Denver 2016Testing Angular 2 Applications - HTML5 Denver 2016
Testing Angular 2 Applications - HTML5 Denver 2016
 
MEAN Stack
MEAN Stack MEAN Stack
MEAN Stack
 
jQuery Chicago 2014 - Next-generation JavaScript Testing
jQuery Chicago 2014 - Next-generation JavaScript TestingjQuery Chicago 2014 - Next-generation JavaScript Testing
jQuery Chicago 2014 - Next-generation JavaScript Testing
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
 
Getting Started with Angular - Stormpath Webinar, January 2017
Getting Started with Angular - Stormpath Webinar, January 2017Getting Started with Angular - Stormpath Webinar, January 2017
Getting Started with Angular - Stormpath Webinar, January 2017
 
Automated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceAutomated perf optimization - jQuery Conference
Automated perf optimization - jQuery Conference
 
Get Hip with JHipster - Colorado Springs OSS Meetup April 2016
Get Hip with JHipster - Colorado Springs OSS Meetup April 2016Get Hip with JHipster - Colorado Springs OSS Meetup April 2016
Get Hip with JHipster - Colorado Springs OSS Meetup April 2016
 
OSGi and JavaScript - Simon Kaegi
OSGi and JavaScript - Simon KaegiOSGi and JavaScript - Simon Kaegi
OSGi and JavaScript - Simon Kaegi
 
Interoperability of components built with different frameworks
Interoperability of components built with different frameworksInteroperability of components built with different frameworks
Interoperability of components built with different frameworks
 
Javascript Frameworks Comparison
Javascript Frameworks ComparisonJavascript Frameworks Comparison
Javascript Frameworks Comparison
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
 
React JS Belgium Touch Base - React, Flux, React Native
React JS Belgium Touch Base - React, Flux, React NativeReact JS Belgium Touch Base - React, Flux, React Native
React JS Belgium Touch Base - React, Flux, React Native
 
The Art of Angular in 2016 - Devoxx UK 2016
The Art of Angular in 2016 - Devoxx UK 2016The Art of Angular in 2016 - Devoxx UK 2016
The Art of Angular in 2016 - Devoxx UK 2016
 
Front-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewFront-End Frameworks: a quick overview
Front-End Frameworks: a quick overview
 

Viewers also liked

Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneJavascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneDeepu S Nath
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Matt Raible
 
Introduction to Underscore.js
Introduction to Underscore.jsIntroduction to Underscore.js
Introduction to Underscore.jsDavid Jacobs
 
MVC Revivial on the Web
MVC Revivial on the WebMVC Revivial on the Web
MVC Revivial on the WebESUG
 
Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017AmarInfotech
 
Marionette: the Backbone framework
Marionette: the Backbone frameworkMarionette: the Backbone framework
Marionette: the Backbone frameworkfrontendne
 
Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014Matt Raible
 

Viewers also liked (7)

Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneJavascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
 
Introduction to Underscore.js
Introduction to Underscore.jsIntroduction to Underscore.js
Introduction to Underscore.js
 
MVC Revivial on the Web
MVC Revivial on the WebMVC Revivial on the Web
MVC Revivial on the Web
 
Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017
 
Marionette: the Backbone framework
Marionette: the Backbone frameworkMarionette: the Backbone framework
Marionette: the Backbone framework
 
Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014
 

Similar to JavaScript MV* Frameworks Comparison

SSDT-Database Project
SSDT-Database ProjectSSDT-Database Project
SSDT-Database ProjectMitesh Gandhi
 
The world of enterprise solution development with asp.net and C#
The world of enterprise solution development with asp.net and C#The world of enterprise solution development with asp.net and C#
The world of enterprise solution development with asp.net and C#Md. Mahedee Hasan
 
How Lyft Drives Data Discovery
How Lyft Drives Data DiscoveryHow Lyft Drives Data Discovery
How Lyft Drives Data DiscoveryNeo4j
 
Neo4j GraphTour Santa Monica 2019 - Amundsen Presentation
Neo4j GraphTour Santa Monica 2019 - Amundsen PresentationNeo4j GraphTour Santa Monica 2019 - Amundsen Presentation
Neo4j GraphTour Santa Monica 2019 - Amundsen PresentationTamikaTannis
 
How Lyft Drives Data Discovery
How Lyft Drives Data DiscoveryHow Lyft Drives Data Discovery
How Lyft Drives Data DiscoveryNeo4j
 
Disrupting Data Discovery
Disrupting Data DiscoveryDisrupting Data Discovery
Disrupting Data Discoverymarkgrover
 
Learning Web Development with Ruby on Rails Launch
Learning Web Development with Ruby on Rails LaunchLearning Web Development with Ruby on Rails Launch
Learning Web Development with Ruby on Rails LaunchThiam Hock Ng
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureSARCCOM
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Cultureifnu bima
 
A practical guidance of the enterprise machine learning
A practical guidance of the enterprise machine learning A practical guidance of the enterprise machine learning
A practical guidance of the enterprise machine learning Jesus Rodriguez
 
Mahout Tutorial and Hands-on (version 2015)
Mahout Tutorial and Hands-on (version 2015)Mahout Tutorial and Hands-on (version 2015)
Mahout Tutorial and Hands-on (version 2015)Cataldo Musto
 
Feature and Future of ASP.NET
Feature and Future of ASP.NETFeature and Future of ASP.NET
Feature and Future of ASP.NETMd. Mahedee Hasan
 
Indore mule soft meetup 3
Indore mule soft meetup 3Indore mule soft meetup 3
Indore mule soft meetup 3Kirti Gurjar
 
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...Ram G Athreya
 
Dataverse meets Teams: low code app opportunities for everyone
Dataverse meets Teams: low code app opportunities for everyoneDataverse meets Teams: low code app opportunities for everyone
Dataverse meets Teams: low code app opportunities for everyoneJukka Niiranen
 
Gab2015 azure search as a service
Gab2015 azure search as a serviceGab2015 azure search as a service
Gab2015 azure search as a serviceAlexandre Marreiros
 
Building Scalable Web Applications using Microservices Architecture and NodeJ...
Building Scalable Web Applications using Microservices Architecture and NodeJ...Building Scalable Web Applications using Microservices Architecture and NodeJ...
Building Scalable Web Applications using Microservices Architecture and NodeJ...Mitoc Group
 

Similar to JavaScript MV* Frameworks Comparison (20)

SSDT-Database Project
SSDT-Database ProjectSSDT-Database Project
SSDT-Database Project
 
The world of enterprise solution development with asp.net and C#
The world of enterprise solution development with asp.net and C#The world of enterprise solution development with asp.net and C#
The world of enterprise solution development with asp.net and C#
 
How Lyft Drives Data Discovery
How Lyft Drives Data DiscoveryHow Lyft Drives Data Discovery
How Lyft Drives Data Discovery
 
Building SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.jsBuilding SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.js
 
Neo4j GraphTour Santa Monica 2019 - Amundsen Presentation
Neo4j GraphTour Santa Monica 2019 - Amundsen PresentationNeo4j GraphTour Santa Monica 2019 - Amundsen Presentation
Neo4j GraphTour Santa Monica 2019 - Amundsen Presentation
 
How Lyft Drives Data Discovery
How Lyft Drives Data DiscoveryHow Lyft Drives Data Discovery
How Lyft Drives Data Discovery
 
Disrupting Data Discovery
Disrupting Data DiscoveryDisrupting Data Discovery
Disrupting Data Discovery
 
Learning Web Development with Ruby on Rails Launch
Learning Web Development with Ruby on Rails LaunchLearning Web Development with Ruby on Rails Launch
Learning Web Development with Ruby on Rails Launch
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering Culture
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Culture
 
A practical guidance of the enterprise machine learning
A practical guidance of the enterprise machine learning A practical guidance of the enterprise machine learning
A practical guidance of the enterprise machine learning
 
Mahout Tutorial and Hands-on (version 2015)
Mahout Tutorial and Hands-on (version 2015)Mahout Tutorial and Hands-on (version 2015)
Mahout Tutorial and Hands-on (version 2015)
 
Meetup SF - Amundsen
Meetup SF  -  AmundsenMeetup SF  -  Amundsen
Meetup SF - Amundsen
 
Feature and Future of ASP.NET
Feature and Future of ASP.NETFeature and Future of ASP.NET
Feature and Future of ASP.NET
 
Indore mule soft meetup 3
Indore mule soft meetup 3Indore mule soft meetup 3
Indore mule soft meetup 3
 
JavaScript MVC Frameworks: Backbone, Ember and Angular JS
JavaScript MVC Frameworks: Backbone, Ember and Angular JSJavaScript MVC Frameworks: Backbone, Ember and Angular JS
JavaScript MVC Frameworks: Backbone, Ember and Angular JS
 
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...
 
Dataverse meets Teams: low code app opportunities for everyone
Dataverse meets Teams: low code app opportunities for everyoneDataverse meets Teams: low code app opportunities for everyone
Dataverse meets Teams: low code app opportunities for everyone
 
Gab2015 azure search as a service
Gab2015 azure search as a serviceGab2015 azure search as a service
Gab2015 azure search as a service
 
Building Scalable Web Applications using Microservices Architecture and NodeJ...
Building Scalable Web Applications using Microservices Architecture and NodeJ...Building Scalable Web Applications using Microservices Architecture and NodeJ...
Building Scalable Web Applications using Microservices Architecture and NodeJ...
 

JavaScript MV* Frameworks Comparison

  • 1. JavaScript MV* Frameworks By Mitesh Gandhi - MetaSys Software
  • 2. Outline • MV* Patterns • Big Four Frameworks • Framework Comparison: – Dependencies – Data Binding – Routers – Views – Testing Mitesh Gandhi - MetaSys Software
  • 3. Outline … • Framework Comparison: – Data – Community – Third Party Integration – Development Tools • React • React vs AngularJS • Guide Lines Mitesh Gandhi - MetaSys Software
  • 4. Outline … • Principle of Natural Fit • Team Adaptability & Learning Curve Mitesh Gandhi - MetaSys Software
  • 5. MV* Patterns Mitesh Gandhi - MetaSys Software
  • 7. Big Four Frameworks AngularJS Knockout Backbone Ember Developed / Maintained Brat Tech LLC, Google and community Steve Sanderson Jeremy Ashkenas Yehuda Katz Design Paradigm MVW MVVM MVP MVC Year Released 2009 2010 2010 2011 Current Stable Release 1.4.7 / Sep. 29, 2015. 3.3.0 / Feb. 18, 2015 1.2.3 / Sep. 03, 2015 2.1.0 / Oct. 4, 2015 File Size 144 kb 21 kb 22.5 kb 427 kb License MIT MIT MIT MIT Website angularjs.org knockoutjs.com backbonejs.org emberjs.com Mitesh Gandhi - MetaSys Software
  • 8. Comparison - Dependencies Framework Dependencies AngularJS No Dependencies Knockout No Dependencies Backbone - Underscore.js - jQuery Ember - Handlebars - jQuery Mitesh Gandhi - MetaSys Software
  • 9. Comparison – Data Binding Mitesh Gandhi - MetaSys Software • Process that establishes a connection between the application UI (User Interface) and business logic
  • 10. Comparison – Data Binding … • Data-binding is fully supported • Models use standard JSON properties (e.g. car.color = "red";) • Provides Option for Creating custom bindings Mitesh Gandhi - MetaSys Software
  • 11. Comparison – Data Binding … • Data-binding is fully supported • Data can be bind into many attributes like text, value, options, enable etc.. • Provides Option for Creating custom bindings Mitesh Gandhi - MetaSys Software
  • 12. Comparison – Data Binding … • Data-binding is not supported by default. • There are plugins available to support Data-binding Mitesh Gandhi - MetaSys Software
  • 13. Comparison – Data Binding … • Data-binding is fully supported • Models use getters and setters but the binding is automatically and better than Backbone. Mitesh Gandhi - MetaSys Software
  • 14. Comparison – ROUTERS Mitesh Gandhi - MetaSys Software • Used for routing your applications URL's when using hash tags(#) • Maps an url to a javaScript function
  • 15. Comparison – ROUTERS … • Router is very simple Mitesh Gandhi - MetaSys Software /person/12/101
  • 16. Comparison – ROUTERS … • Knockout does not support routing by default • Still Routing is easily configurable by following third party libraries Mitesh Gandhi - MetaSys Software
  • 17. Comparison – ROUTERS … • Routing is very simple Mitesh Gandhi - MetaSys Software /person/12/101
  • 18. Comparison – ROUTERS … • Router is extremely capable, but very complex • Supported embedded routes Mitesh Gandhi - MetaSys Software /person/12/101
  • 19. Comparison – Views Mitesh Gandhi - MetaSys Software • How the stuffs are displayed in the screen
  • 20. Comparison – Views … • Uses HTML as templating language • Automatically pulls in HTML templates via AJAX when needed Mitesh Gandhi - MetaSys Software
  • 21. Comparison – Views … • Uses HTML as templating language Supports • Native templates – Using default control flow bindings • String based templates – Third-party template engine Mitesh Gandhi - MetaSys Software
  • 22. Comparison – Views … • Simple and straight forward. • Easy for developer with JQuery and DOM skills • Simply extend Backbone.View, grab an element and put stuff in it • No Official Templating, but easy to add using Mitesh Gandhi - MetaSys Software
  • 23. Comparison – Views … • Extensive view type support • Very easy to create re-usable components • Handlebars are used for templating Mitesh Gandhi - MetaSys Software
  • 24. Comparison – Testing Mitesh Gandhi - MetaSys Software • Support for testing application
  • 25. Comparison – Testing … • Fantastic test support. • Designed from the beginning to be easy to test. • Karma developed by Angular JS team is popular test runner Mitesh Gandhi - MetaSys Software
  • 26. Comparison – Testing … • As of now, no default debugging tools • Functions like Console.log(), ko.toJSON() helps debugging process • Can use following third party solutions Mitesh Gandhi - MetaSys Software
  • 27. Comparison – Testing … • No default test solution; • Test it your own • Can use following third party solutions Mitesh Gandhi - MetaSys Software
  • 28. Comparison – Testing … • Poor testing initially • Pretty good testing support now Mitesh Gandhi - MetaSys Software
  • 29. Comparison – Data Mitesh Gandhi - MetaSys Software • How do I get data from the sever?
  • 30. Comparison – Data … • No JQuery • Can do with Angular’s $http but much better using $resource • Very good API Mitesh Gandhi - MetaSys Software
  • 31. Comparison – Data … • Uses JQuery’s $.ajax • Uses knockout mapping plugin • Maps JavaScript object into a view model with the appropriate observables Mitesh Gandhi - MetaSys Software
  • 32. Comparison – Data … • Uses JQuery’s $.ajax to power Backbone. • Default behavior is relatively easy to override • Nothing is free in Backbone. Backbone gives you some useful events to listen for and lets you handle it yourself. But you must wire up all the data binding yourself. Mitesh Gandhi - MetaSys Software
  • 33. Comparison – Data … • Uses JQuery’s $.ajax under the covers • Just “getting data” is relatively easy to do e.g. Mitesh Gandhi - MetaSys Software • Doing things the “Ember way” is a bit more complex
  • 34. Comparison – Community Mitesh Gandhi - MetaSys Software Metric AngularJS Backbone.js Ember.js Knockout Stars on Github 40.2k 18.8k 14.1k 6.8k Third-Party Modules 1488 ngmodules 256 backplugs 1155 emberaddons 208 npmjs & GitHub StackOverflow Questions 104k 18.2k 15.7k 14.8K YouTube Results ~93k ~10.6k ~9.1k ~17.6 K GitHub Contributors 96 265 501 61 Chrome Extension Users 275k 15.6k 66k 29.7k Open Issues 922 13 413 188 Closed Issues 5,520 2,062 3,350 1,145
  • 35. Comparison – Community… Mitesh Gandhi - MetaSys Software Google Trends Interest Over Time – Web Search – Worldwide – Aug. 2011 to Oct. 2015
  • 36. Comparison – Community / Documentation Mitesh Gandhi - MetaSys Software
  • 37. Comparison – Third Party Integration Mitesh Gandhi - MetaSys Software
  • 38. Comparison – Development Tools Mitesh Gandhi - MetaSys Software
  • 39. • An open-source JavaScript Library released in 2013. • Maintained by Facebook, Instagram and the open source community. • Built as a component for Facebook to quickly update dynamic content • Around 30,000 stars on its Github page • Specific version for iOS development called React Native esh Gandhi - MetaSys Software
  • 40. React • Most performant way to manage your DOM • Specifically when using large sets of data • Implements one-way reactive data flow • Considered to only be the view • Library AngularJS • Primary goal SinglePageApplication • Load New content without leaving the page • Two-way data binding • MVW • Framework Mitesh Gandhi - MetaSys Software
  • 41. • Following are just guidelines and one should not treat them like line carved in stone. They are meant to be bent as required. Mitesh Gandhi - MetaSys Software
  • 42. Principle of Natural Fit • Some libraries are natural fit for certain tasks. • For example, Backbone.js apparent choice for RESTful JSON applications. • Frameworks like Angular, Backbone are good choice for building Single Page Applications. Mitesh Gandhi - MetaSys Software
  • 43. Team Adaptability & Learning Curve • Especially in case of rapid prototyping, it helps development teams to select libraries with less learning curve and easier adaption. • Library like Knockout or Kendo UI is easier to catch on for WPF or Silverlight developers as their philosophy is based on same MVVM pattern. Mitesh Gandhi - MetaSys Software
  • 44. Thank You! Mitesh Gandhi - MetaSys Software

Editor's Notes

  1. Polymer – Web component Vue - Intuitive, Fast and Composable MVVM for building interactive interfaces.
  2. Architecture presentation patterns UI has complicated logic to manipulate the user interface objects and second it also maintains state of the application
  3. Yehuda Katz – Member of jQuery and Ruby on Rail Steve Sanderson – Microsoft Employee Jeremy Ashkenas – Also developed Underscore.JS and CoffeeScript
  4. Backbone - Underscore.js(For RESTful persistence and DOM manipulation with Backbone.View) include jQuery ( >= 1.11.0), and json2.jsfor older Internet Explorer support.
  5. You need this feature if you’re in a client-side app and virtually switching pages on the client-side. So, whenever you click a link or change an URL in the address bar, that URL change or window.location change is being intercepted on the client, and a new virtual template will be loaded with new data.
  6. Router is similar to Backbone
  7. Router is similar to Backbone
  8. Router is similar to Backbone
  9. Router is similar to Backbone
  10. On the other hand, nothing is free in Backbone. Backbone gives you some useful events to listen for and lets you handle it yourself. But you must wire up all the data binding yourself. --Very Easy to understand
  11. Community is one of the most important factors to consider when choosing a framework. A large community means more questions answered, more third-party modules, more YouTube tutorials…you get the point. I have put together a table with the numbers, as of June 30, 2015. 
  12. How easy to integrate another JS library?
  13. Ember – SPA Ember Desktop - Apple Music,[8] a feature of the iTunes desktop application.