For some indication of what we use in Hue (Cloudera's Desktop UI), here's
the Behavior class I authored for that purpose:

https://github.com/anutron/behavior

Example filter:

https://github.com/anutron/more-behaviors/blob/master/Source/Forms/Behavior.OverText.js

Example usage:

https://github.com/anutron/more-behaviors/blob/master/Tests/Behaviors/Behavior.OverText.html

I'm not enamored with the declarative conventions in use, but they work
well. Essentially:

   - there's only one selector ever run to get all the elements that need to
   be constructed ([data-filters]), which is better than just using class names
   because every time you add a new filter your app gets slower.
   - elements can have numerous filters of course (FormValidator,
   FormRequest)
   - properties for individual filters are arbitrary data-* properties. For
   example, here's a filter for Drag.Resize:

   
https://github.com/anutron/more-behaviors/blob/master/Source/Drag/Behavior.Resizable.js
   it uses *data-resize-handle* and *data-resize-modifiers* to pass along
   values to the drag instance. Each filter can arbitrarily choose what
   arguments it'll fetch from the element properties this way. There's a
   potential for name collision obviously. Note that these arguments are often
   used *by the filter* and not necessarily by the class the filter invokes.

We could drop the data-* which makes the pattern a little nicer looking but
less valid. We could come up with a convention for declaring arguments that
is a little less arbitrary...

FWIW though, I love developing this way. I don't have hardly any
"application" code but rather all these patterns that are much easier to
reuse...


On Thu, Dec 30, 2010 at 6:52 AM, Thomas Aylott <[email protected]>wrote:

> Ahoy,
> Dojo, Apple iAds as well as Adobe Flex and a million others
> have created simple declarative APIs that you can use in your HTML.
> This lets you basically replace your app.js or page.js code and get rid of
> the massive domredy scripts you see people use all the time.
>
> Instead there’s a single parser that runs on domready that looks for
> elements with special attributes and then instantiates all your classes for
> you based on the attributes declared in your HTML.
>
> The goal is to allow your JS-n00b co-workers to ‘code’ without screwing up
> your lovely JS and making massive rats nests that you’ll have to clean up
> later. There are other goals too ofcourse.
>
> So… What syntax do you guys like?
> If you have other suggestions please fork and add!
>
> https://gist.github.com/759332
>
>
> — Thomas Aylott – SubtleGradient – MooTools – Cloudera —
>
>

Reply via email to