[jQuery] Announcing Concrete - a jQuery library for structured code development

[jQuery] Announcing Concrete - a jQuery library for structured code development


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