• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
A Very Biased Comparison of MVC Libraries
 

A Very Biased Comparison of MVC Libraries

on

  • 1,258 views

BrazilJS talk comparing CanJS to Backbone and Ember

BrazilJS talk comparing CanJS to Backbone and Ember

Statistics

Views

Total Views
1,258
Views on SlideShare
1,203
Embed Views
55

Actions

Likes
1
Downloads
78
Comments
0

2 Embeds 55

https://twitter.com 54
https://si0.twimg.com 1

Accessibility

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • Set out to make CanJS the best documented library.\n\nAwesome overview page with it’s sweet navigation, underlying docs for every function, method, attribute, and demo applications for each component.\n\nAnnotated Source\n\n\nAnd hire us for training, support, or development\n
  • deep binding\n\n\n\nthe flexibility to switch between libraries without losing all your skills and even some of your (code)\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

A Very Biased Comparison of MVC Libraries A Very Biased Comparison of MVC Libraries Presentation Transcript

  • A Very BiasedComparison ofMVC Libraries
  • Brian MoschelTraining / Consulting / Support
  • 2010 2012
  • WHATWEWANT { Small Fast Best Practices Productivity Easy to Learn
  • THE TWO WORLDS Light HeavyEasy to Learn Live Binding Small Size Computed Properties Basic MVC Memory Safety
  • THE BEST OF BOTH WORLDS Easy to Learn Live Binding Small Size Computed Properties Basic MVC Memory Safety
  • THE BEST OF BOTH WORLDS
  • THE BEST OF BOTH WORLDS Presunto
  • THE BEST OF BOTH WORLDS Presunto Queijo
  • THE BEST OF BOTH WORLDS Presunto Queijo
  • WHERE IT CAME FROM... StealJS
  • What’s Inside Modelcan.Construct can.Observe can.Model
  • What’s Inside Model Controllercan.Construct can.Control can.Observe can.route can.Model
  • What’s Inside Model Controller Viewcan.Construct can.Control can.view can.Observe can.route can.EJS can.Model
  • JUST SHOWME A MATRIXALREADY
  • Small Fast- JSPerfBest PracticesProductivityEasy to Learn
  • Download Size 8.97k 37k 13k 9.47k Small Download Builder Live Bind Perf 14 38 63 50 Fast- JSPerf Control Initialization 135 81 n/a 135 MVC Separation Memory SafetyBest Practices REST Service Layer Routing Logic in Controller Global Store Live BindingProductivity Deferreds Computed Properties Partial View Support Perceived Learning Curve low high low lowEasy to Learn Library Agnostic
  • http://commanders.canjs.us/https://github.com/jupiterjs/commanders
  • PRODUCTIVITY
  • PRODUCTIVITYLive Binding
  • PRODUCTIVITYGlobal Store
  • PRODUCTIVITYcan.compute
  • PRODUCTIVITYPlugins • Validations • Getter / Setter • Attribute Converters • Backup / Restore • Super • Proxy
  • BEST PRACTICES
  • BEST PRACTICESMemory Leaks $.fn.tooltipFor = function(anchor){ var $el = this .appendTo(document.body) .offset( $(anchor).offset() ) $(anchor).bind(mouseleave,function(ev){ $el.remove() }) }
  • BEST PRACTICEScan.Control and Templated Events {anchor} mouseleave: function( el, ev ) { this.element.remove(); }
  • BEST PRACTICESNon-Leaking Global Store
  • EASY TO LEARN
  • EASY Docs!
  • EASY Docs!
  • EASY Docs!
  • EASY Docs!
  • EASY Docs!
  • EASY Docs!
  • EASY Docs!
  • EASY Docs!
  • EASY Docs!
  • EASY Docs!
  • EASY Library Support
  • FAST
  • FAST Live Bind Perf http://jsperf.com/live-binding-in-the-wild
  • FASTControl Initialization http://jsperf.com/tabs-timing-test/7
  • SMALL
  • SMALLDownload Size 40 30 20 10 0 BackboneJS CanJS KnockoutJS BatmanJS AngularJS EmberJS
  • SMALLDownloadBuilder
  • WHAT’S NEXT{{ mustache.js }} Support!Library-less Versioncan.route Push State
  • http://canjs.us@canjsus