A Very Biased Comparison of MVC Libraries

1,783 views

Published on

BrazilJS talk comparing CanJS to Backbone and Ember

Published in: Technology, Education, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,783
On SlideShare
0
From Embeds
0
Number of Embeds
42
Actions
Shares
0
Downloads
87
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \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

    1. 1. A Very BiasedComparison ofMVC Libraries
    2. 2. Brian MoschelTraining / Consulting / Support
    3. 3. 2010 2012
    4. 4. WHATWEWANT { Small Fast Best Practices Productivity Easy to Learn
    5. 5. THE TWO WORLDS Light HeavyEasy to Learn Live Binding Small Size Computed Properties Basic MVC Memory Safety
    6. 6. THE BEST OF BOTH WORLDS Easy to Learn Live Binding Small Size Computed Properties Basic MVC Memory Safety
    7. 7. THE BEST OF BOTH WORLDS
    8. 8. THE BEST OF BOTH WORLDS Presunto
    9. 9. THE BEST OF BOTH WORLDS Presunto Queijo
    10. 10. THE BEST OF BOTH WORLDS Presunto Queijo
    11. 11. WHERE IT CAME FROM... StealJS
    12. 12. What’s Inside Modelcan.Construct can.Observe can.Model
    13. 13. What’s Inside Model Controllercan.Construct can.Control can.Observe can.route can.Model
    14. 14. What’s Inside Model Controller Viewcan.Construct can.Control can.view can.Observe can.route can.EJS can.Model
    15. 15. JUST SHOWME A MATRIXALREADY
    16. 16. Small Fast- JSPerfBest PracticesProductivityEasy to Learn
    17. 17. 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
    18. 18. http://commanders.canjs.us/https://github.com/jupiterjs/commanders
    19. 19. PRODUCTIVITY
    20. 20. PRODUCTIVITYLive Binding
    21. 21. PRODUCTIVITYGlobal Store
    22. 22. PRODUCTIVITYcan.compute
    23. 23. PRODUCTIVITYPlugins • Validations • Getter / Setter • Attribute Converters • Backup / Restore • Super • Proxy
    24. 24. BEST PRACTICES
    25. 25. BEST PRACTICESMemory Leaks $.fn.tooltipFor = function(anchor){ var $el = this .appendTo(document.body) .offset( $(anchor).offset() ) $(anchor).bind(mouseleave,function(ev){ $el.remove() }) }
    26. 26. BEST PRACTICEScan.Control and Templated Events {anchor} mouseleave: function( el, ev ) { this.element.remove(); }
    27. 27. BEST PRACTICESNon-Leaking Global Store
    28. 28. EASY TO LEARN
    29. 29. EASY Docs!
    30. 30. EASY Docs!
    31. 31. EASY Docs!
    32. 32. EASY Docs!
    33. 33. EASY Docs!
    34. 34. EASY Docs!
    35. 35. EASY Docs!
    36. 36. EASY Docs!
    37. 37. EASY Docs!
    38. 38. EASY Docs!
    39. 39. EASY Library Support
    40. 40. FAST
    41. 41. FAST Live Bind Perf http://jsperf.com/live-binding-in-the-wild
    42. 42. FASTControl Initialization http://jsperf.com/tabs-timing-test/7
    43. 43. SMALL
    44. 44. SMALLDownload Size 40 30 20 10 0 BackboneJS CanJS KnockoutJS BatmanJS AngularJS EmberJS
    45. 45. SMALLDownloadBuilder
    46. 46. WHAT’S NEXT{{ mustache.js }} Support!Library-less Versioncan.route Push State
    47. 47. http://canjs.us@canjsus

    ×