Ganesh P A, Technical Architect
 A WALK THROUGH - JAVASCRIPT
FRAMEWORKS
JAVASCRIPT MV* FRAMEWORKS
 Organize code using
variations of MVC
Pattern
 Helps in
 Readable, structured,
testable and maintainable
code
 Tying together a DOM
manipulation library
 Templating
 Routing
BIG FOUR
 Maintained by Google and
community
 Initially Released on 2009
 Current stable release 1.3.x
(Feb 2015)
 ~110 kb (gzip/minified)
Miško Hevery and Adam Abrons
 Developed and is maintained by
Steve Sanderson, a Microsoft
employee
 It is a personal open-source project,
and not a Microsoft product.
 Released on July 5, 2010
 Current version 3.3.0 (Feb 2015)
 ~21 kb (gzip/minified)
 Created by Jeremy Ashkenas,
 Initially Released on October
2010,
 Current stable release 1.1.2
 ~6.5 kb (gzip/minified)
 Created by Yehuda Katz, a
member of the jQuery, Ruby on
Rails and SproutCore core
teams.
 Initially released as the
SproutCore 2.0 framework later
renamed as Ember.js
 Initial release : 2011
 Current stable release 1.10.0
 ~102 kb (gzip/minified)
 Comparison
 Scoring system
 OK  Not Good Good
 How fast can I get up and running from homepage link?
 HELLO WORLD
 Github
 https://github.com/jashkenas/backbone
 Github
 https://github.com/emberjs/ember.js

 Github
 https://github.com/angular/angular.js
 Github
 https://github.com/knockout/knockout
 DEPENDENCIES
 NO DEPENDENCIES
 NO DEPENDENCIES
DATA BINDING
 Process that establishes a connection between the
application UI (User Interface) and business logic
 Data-binding is fully
supported
 Data can be bind into
many attributes like
text,value, options,
enable etc
 Provides Option for
Creating custom
bindings
 Data-binding is fully supported
 Models use standard JSON properties (e.g. car.color = "red";)
 Provides Option for Creating custom bindings
 Data-binding is not supported
by default.
 There are plugins available to
support Data-binding
 Data-binding is fully supported
 Models use getters and setters but the binding is
automatically and better than Backbone.
 Used for routing your applications URL's when using
hash tags(#) and/or HTML5 history API
 Maps an url to a javascript function
ROUTERS
 /person/12/101
 Routing is very simple
 Router is similar to Backbone’s
 /person/12/101
 Router is extremely capable, but very complex
 Supported embedded routes
 /person/12/101
 Knockout does not support routing by default
 Still Routing is easily configurable by following third party libraries
VIEWS
 How the stuffs are displayed in the screen
 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
 Uses HTML as templating language
 Automatically pulls in HTML templates via AJAX when needed
 Extensive view type support
 Very easy to create re-usable components
 Handlebars are used for templating
 Uses HTML as templating language
Supports
 Native templates
 Using default control flow bindings
 String based templates
 Third-party template engine
TESTING
 Support for testing application
 No default test solution;
 Test it your own
 Can use following third party solutions
 Fantastic test support.
 Designed from the beginning to be easy to test.
 Karma developed by Angular JS team is popular test runner
 Poor testing initially
 Pretty good testing support now
 As of now, no default debugging tools
 Functions like Console.log(), ko.toJSON() helps debugging process
 Can use following third party solutions
DATA
 How do I get data from the sever?
 Uses JQuery’s $.ajax to power Backbone.
 Very Easy to understand
 Default behaviour is relatively easy to override
 No JQuery
 Can do with Angular’s $http but much better using $resource
 Very good API
 Requires the ngResource module to be installed.
 Uses JQuery’s $.ajax under the covers
 Just “getting data” is relatively easy to do e.g.
 Doing things the “Ember way” is a bit more complex
 Uses JQuery’s $.ajax
 Uses knockout mapping plugin
 Maps JavaScript object into a view model
with the appropriate observables
 How easy to get help?
 COMMUNITY /DOCUMENTATION
 How easy to get help?
 THIRD PARTY INTEGRATION
 How easy to integrate another JS library?
 Hello World
 Dependencies
 Data binding
 Routers
 Views
 Testing
 Data
 Community/Doc
umentation
 Third party
integration
 Development
tools

Javascript Frameworks Comparison

  • 1.
    Ganesh P A,Technical Architect
  • 2.
     A WALKTHROUGH - JAVASCRIPT FRAMEWORKS
  • 3.
    JAVASCRIPT MV* FRAMEWORKS Organize code using variations of MVC Pattern  Helps in  Readable, structured, testable and maintainable code  Tying together a DOM manipulation library  Templating  Routing
  • 4.
  • 6.
     Maintained byGoogle and community  Initially Released on 2009  Current stable release 1.3.x (Feb 2015)  ~110 kb (gzip/minified) Miško Hevery and Adam Abrons
  • 7.
     Developed andis maintained by Steve Sanderson, a Microsoft employee  It is a personal open-source project, and not a Microsoft product.  Released on July 5, 2010  Current version 3.3.0 (Feb 2015)  ~21 kb (gzip/minified)
  • 8.
     Created byJeremy Ashkenas,  Initially Released on October 2010,  Current stable release 1.1.2  ~6.5 kb (gzip/minified)
  • 9.
     Created byYehuda Katz, a member of the jQuery, Ruby on Rails and SproutCore core teams.  Initially released as the SproutCore 2.0 framework later renamed as Ember.js  Initial release : 2011  Current stable release 1.10.0  ~102 kb (gzip/minified)
  • 10.
     Comparison  Scoringsystem  OK  Not Good Good
  • 11.
     How fastcan I get up and running from homepage link?  HELLO WORLD
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 19.
  • 20.
  • 21.
    DATA BINDING  Processthat establishes a connection between the application UI (User Interface) and business logic
  • 22.
     Data-binding isfully supported  Data can be bind into many attributes like text,value, options, enable etc  Provides Option for Creating custom bindings
  • 23.
     Data-binding isfully supported  Models use standard JSON properties (e.g. car.color = "red";)  Provides Option for Creating custom bindings
  • 24.
     Data-binding isnot supported by default.  There are plugins available to support Data-binding
  • 25.
     Data-binding isfully supported  Models use getters and setters but the binding is automatically and better than Backbone.
  • 26.
     Used forrouting your applications URL's when using hash tags(#) and/or HTML5 history API  Maps an url to a javascript function ROUTERS
  • 27.
  • 28.
     Router issimilar to Backbone’s  /person/12/101
  • 29.
     Router isextremely capable, but very complex  Supported embedded routes  /person/12/101
  • 30.
     Knockout doesnot support routing by default  Still Routing is easily configurable by following third party libraries
  • 31.
    VIEWS  How thestuffs are displayed in the screen
  • 32.
     Simple andstraight 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
  • 33.
     Uses HTMLas templating language  Automatically pulls in HTML templates via AJAX when needed
  • 34.
     Extensive viewtype support  Very easy to create re-usable components  Handlebars are used for templating
  • 35.
     Uses HTMLas templating language Supports  Native templates  Using default control flow bindings  String based templates  Third-party template engine
  • 36.
    TESTING  Support fortesting application
  • 37.
     No defaulttest solution;  Test it your own  Can use following third party solutions
  • 38.
     Fantastic testsupport.  Designed from the beginning to be easy to test.  Karma developed by Angular JS team is popular test runner
  • 39.
     Poor testinginitially  Pretty good testing support now
  • 40.
     As ofnow, no default debugging tools  Functions like Console.log(), ko.toJSON() helps debugging process  Can use following third party solutions
  • 41.
    DATA  How doI get data from the sever?
  • 42.
     Uses JQuery’s$.ajax to power Backbone.  Very Easy to understand  Default behaviour is relatively easy to override
  • 43.
     No JQuery Can do with Angular’s $http but much better using $resource  Very good API  Requires the ngResource module to be installed.
  • 44.
     Uses JQuery’s$.ajax under the covers  Just “getting data” is relatively easy to do e.g.  Doing things the “Ember way” is a bit more complex
  • 45.
     Uses JQuery’s$.ajax  Uses knockout mapping plugin  Maps JavaScript object into a view model with the appropriate observables
  • 46.
     How easyto get help?  COMMUNITY /DOCUMENTATION
  • 47.
     How easyto get help?  THIRD PARTY INTEGRATION  How easy to integrate another JS library?
  • 54.
     Hello World Dependencies  Data binding  Routers  Views  Testing  Data  Community/Doc umentation  Third party integration  Development tools