Now that's a micro-framework :P In all seriousness a recent JS project of mine uses http://www.traitsjs.org/ to create a lightweight (in implementation not file size) framework. Traits.js allows you to use Object.create with older browsers as well.
Ok, I found this to actually be pretty useful. In reading the comments it cleared up a spot where my understanding of javascript was a bit weak.
More seriously, though, there seems to be a new javascript framework every day... and at some point I'm going to need to pick one for the project I'm working on. Its hard to tell which ones are appropriate for servers, vs clients, etc.
I wonder if anyone has made a directory of javascript frameworks?
I'm not looking forward to the task of going thru all the ones I've bookmarked over the past few months and trying to decide which are most appropriate, and which overlap each other, vs. which provide separate functionality that could be used together.
Totally agreed about yearning for a directory of JavaScript frameworks.
I use a little jQuery, and I'm getting to the point where I'm ready to add a little more structure. But should I be using Backbone.js? Spine claims to be cleaner, but how do the communities/plug-ins compare? How does KnockoutJS compare? BatmanJS? Should I be abandoning jQuery for something more extensive like SproutCore or Sencha?
I'm also totally unclear on how compatible things are. A lot of the frameworks don't even seem to agree on basic things like how to do inheritance or whether they should use JavaScript or CoffeeScript. (Though I suppose they mostly don't break each others' namespaces any more.)
Is there some over-arching list of features that covers all of the existing frameworks, and that could be put into a table? If so, does such a table exist? If things are just a popularity contest, who is winning the popularity contest?
A company I work with uses ext.js, it's not open source (unfortunately) but I'm pretty impressed with what those guys can achieve with it and how long it takes them.
Thanks for the downvote, whoever it was. If you have had a negative experience with ext.js or think it is not an appropriate candidate it would be nice to know.
Backbone may be lightweight, but that's only because it's a "framework" for exactly what the authors happened to be doing at the time. If you don't have a collection of objects as a JSON document at /some-url and each object available at /some-url/id, then Backbone does approximately nothing.
A simple reimplementation without http support looks something like:
Model.prototype.set = function(key, value){ this[key] = value; for(v in views){ v.refresh() } }
View.prototype.set_model = function(model){ model.views.push(this) }
thing = new Model();
view = new ViewSubclass();
view.set_model(thing);
thing.set('foo', 'bar'); # WOWZA THE VIEW UPDATES!!!11!!!
While I decided not to use backbone, there is a need for a more structured encapsulation and abstraction of functionality.
For example, if the architecture you'd like to build only serves JSON and HTML templates, and javascript renders the rest, you save a lot on bandwith and cpu. The html is cached in the browser, the server only needs to produce JSON. Add a JSON based, restful DB, and you have an architecture that really fits what the web is becoming.
The JSON layer is perfectly suited for being the API layer other clients as well - otherwise you might have a lot of crufty code on the server that has to be cleaned up for use by any other client (e.g. native iPhone).
I never used those javascript frameworks that appear to be all over the place, so I'm not sure I get the humor... the joke is that they are to some extent unnecessary and introduce bloat.
Ok, that was simply assumed, I would like to see some more sophisticated humor. Creating three empty objects feels like a joke that can be thrown at anything. Just my opinion.