Here’s a rundown of the basic details of each technology covered:
Backbone
- Who: Jeremy Ashkenas and DocumentCloud
- What:
- Model-View in JavaScript, MIT licensed
- Most minimal of all the libraries — only one file, 800 lines of code!
- Extremely tightly-scoped functionality — just provides REST-persistable models with simple routing and callbacks so you know when to render views (you supply your own view-rendering mechanism).
- The best-known of them all, with the most production deployments on big-name sites (perhaps easy to adopt because it’s so minimal)
- Why:
- It’s so small, you can read and understand all of the source before you use it.
- No impact on your server architecture or file layout. Can work in a small section of your page — doesn’t need to control whole page.
- Jeremy seems to exist in a kind of zen state of calm, reasonable opinions about everything. He was like the grown up, supervising all the arguing kids.
- Where: GitHub and own site
- When: In production for nearly 2 years now
Meteor
- Who: The Meteor development group, who just raised $11.2 Million so they can do this full-time
- What:
- Crazy amazing framework from the future, barely reminiscent of anything you’ve ever seen (except perhaps Derby)
- Bridges a server-side runtime (on Node+Mongo) with a client-side one, so your code appears to run on both, including the database. WebSockets syncs between all client(s) and server.
- Does “live deployments” every time you edit your code – client-side runtimes are updated on the fly without losing their state
- Makes more sense if you watch the video
- Like everyone I spoke to at the event, I really want this to succeed — web development needs something this radical to move forwards
- Why: You’ve had enough of conventional web development and now want to live on the bleeding edge.
- Where: GitHub and own site
- When: It’s still early days; I don’t know if there are any production Meteor sites yet except built by the core team. They’re totally serious about doing this, though.
Ember
- Who: Yehuda Katz (formerly of jQuery and Rails), the Ember team, and Yehuda’s company Tilde
- What:
- Everything you need to build an “ambitious web application”, MIT license
- Biggest framework of them all in both functionality and code size
- Lots of thought has gone into how you can decompose your page into a hierarchy of controls, and how this ties in with a statemachine-powered hierarchical routing system
- Very sophisticated data access library (Ember.Data) currently in development
- Intended to control your whole page at runtime, so not suitable for use in small “islands of richness” on a wider page
- Pretty heavily opinionated about files, URLs, etc., but everything is overridable if you know how
- Design inspired by Rails and Cocoa
- Tooling: They supply project templates for Rails (but you can use other server platforms if you write the code manually)
- Why: Common problems should have common solutions — Ember makes all the common solutions so you only have to think about what’s unique to your own application
- Where: GitHub and own site
- When: Not yet at 1.0, but aiming for it soon. API will solidify then.
AngularJS
- Who: Developed by Google; used internally by them and MIT licensed.
- What:
- Model-View-Whatever in JavaScript, MIT licensed
- DOM-based templating with observability, declarative bindings, and an almost-MVVM code style (they say Model-View-Whatever)
- Basic URL routing and data persistence built in
- Tooling: they ship a Chrome debugger plugin that lets you explore your models while debugging, and a plugin for the Jasmine testing framework.
- Why:
- Conceptually, they say it’s a polyfill between what browsers can do today and what they will do natively in a few years (declarative binding and observability), so we should start coding this way right now
- No impact on your server architecture or file layout. Can work in a small section of your page — doesn’t need to control whole page.
- Where: GitHub and own site
- When: In production now (has been at Google for a while)
Knockout
- Who: The Knockout team and community (currently three on the core team, including me)
- What:
- Model-View-ViewModel (MVVM) in JavaScript, MIT licensed
- Tightly focused on rich UIs: DOM-based templates with declarative bindings, and observable models with automatic dependency detection
- Not opinionated about URL routing or data access — combines with arbitrary third-party libraries (e.g., Sammy.js for routing and plain ajax for storage)
- Big focus on approachability, with extensive documentation and interactive examples
- Why:
- Does one thing well (UI), right back to IE 6
- No impact on your server architecture or file layout. Can work in a small section of your page — doesn’t need to control whole page.
- Where: GitHub and own site
- When: In production for nearly 2 years now
Spine
- Who: Alex MacCaw
- What:
- MVC in JavaScript, MIT license
- Worked example originally written for an O’Reilly book grew into an actual OSS project
- Is a kind of modified clone of Backbone (hence the name)
- Why: You like Backbone, but want a few things to be different.
- Where: GitHub and own site
- When: It’s past v1.0.0 now
Batman
- Who: the team at Shopify (an eCommerce platform company)
- What:
- MVC in JavaScript, almost exclusively for Rails+CoffeeScript developers, MIT licensed
- Most opinionated of them all. You must follow their conventions (e.g., for file layout and URLs) or, as they say in their presentation,”go use another framework“
- Full-stack framework with pretty rich models, views, and controllers and routing. And observability mechanism of course.
- DOM-based templating.
- Why: If you use Rails and CoffeeScript, you’ll be right at home
- Where: GitHub and own site
- When: Currently at 0.9. Aiming for 1.0 in coming months.
CanJS
- Who: the team at Bitovi (a JavaScript consulting/training company)
- What:
- MVC in JavaScript, MIT licensed
- REST-persistable models, basic routing, string-based templating
- Not widely known (I hadn’t heard of it before last week), though is actually a reboot of the olderJavaScriptMVC project
- Why: Aims to be the best of all worlds by delivering features similar to the above libraries while also being small
- Where: GitHub and own site
- When: Past 1.0 already
No comments:
Post a Comment