Hi, I'd like to announce the 0.9 (API stable) release of the Concrete (http://github.com/hafriedlander/jquery.concrete) and Selector (http:// github.com/hafriedlander/jquery.selector) libraries for jQuery.
Concrete provides a brand new model of javascript code organisation – a replacement for Object Oriented programming that is focused on adding functions to DOM elements based on their structure and content. It’s a merging of the model and view layer that initially seems weird, but can give very powerful results. We’re standing on the shoulders of giants here, taking ideas from Prototype’s behaviour & lowpro and jQuery’s effen & livequery. Concrete extends these concepts to provide a complete alternative to traditional OO design - self-aware methods, inheritance, polymorphism, constructors and destructors, namespacing and getter/setter style properties, all without a single class definition. Compared to jQuery.plugins and jQuery.UI widgets, Concrete provides: * code clarity - the code structure leads to more readable code * extensibility - specificity based method selection allows the injection of logic almost anywhere without monkey patching * greater organisational capabilities - syntax promotes modularity * reduced name clashes - powerful refactoring-free namespacing eliminates name pollution A key component of Concrete is Selector - a css selector engine developed in conjunction with Concrete to give it maximum performance. For the use patterns is it designed for, it can out-perform jQuery's native Sizzle selector engine by an order of magnitude. Developed by me, Hamish Friedlander, and partially sponsored by SilverStripe (http://www.silverstripe.org/), Concrete is in use in several projects internally, and is a key component of the CMS redevelopment for the next version of SilverStripe. A taste: $('div').concrete({ highlight: function(){ this.effect('bounce'); } }); $('div.important').concrete({ highlight: function(){ this._super(); this.animate({background: 'white'}); } }); $('#namediv').highlight(); In addition to the source (http://github.com/hafriedlander/ jquery.concrete), a tutorial (http://hafriedlander.github.com/ jquery.concrete/tutorial/) and a screencast (http://www.vimeo.com/ 6353390) are available to help introduce the new concepts. Hamish Friedlander SilverStripe