Composer.js

Framework comparison

Obviously, we’re going to be biased, but here’s a quick comparison between Composer and a few other projects.

Feature Composer.js Backbone.js
Supports modules Yes Yes
Dependencies History.js jQuery or Zepto, underscore.js
Ships with a generic class system Yes No
Provides hierarchical data relationships Yes As a module
Provides filtered collections Yes No
Provides controller <-> collection tracking Yes No
Provides AJAX API syncing out of the box DIY Yes
Allows granular silencing of specific events Yes No
Supports using promises for async operations Yes, via ES6 (or compatible, like Bluebird) Yes (via jQuery promises)
"View" or "Controller"? Controller View
Router supports named parameters No (regex only) Yes
Router provides automatic link binding Yes No
Comes with history management Requires History.js Requires jQuery
Supports event binding contexts Yes, string-based Yes, object-based
Provides Controller event inheritance Yes No
Controller DOM diffing/patching/batching Yes with morphdom As a module w/ Marionette/VDOM
Supports IE 6+ When using Mootools No

This list is not exhaustive. For instance, the relational models that Composer and Backbone use are fairly different in the way they handle data (Backbone forces one-instance-many-locations, Composer favors many-instances). There are also utility functions in models/collections that one framework provides that the other doesn’t and vice versa.

The best way to get a good feeling for Composer’s abilities is to read the docs.