I'm looking at using MochiKit for a very large online website that I'm
not allowed to mention for security concerns. (You could probably guess
who.)
Anyway, my team is looking at this AJAX thing and now I've been
assigned as the guinea pig to make sense of it all and see how we can
do this with as little effort as possible. I'm really laying the
foundation here, so I want to do things right from the get-go.
MochiKit has kind of stood out from the pack (a) because it works and
(b) because the code doesn't suck.
Now, I've read three fat books on Javascript written in the past year.
I've written some pretty extensive stuff using my own crappy libraries
in Javascript. I've already learned Python, Perl, C, C++, and a few
others I can't recall right now. I have extensive experience with
Python and Qt. The other widget libraries--not so much. (I used to do
Win32 and MFC back in the day... what a joke!) I have way too much
experience with Perl.
I would like to help extend MochiKit. Right now, the biggest weaknesses
that I see are that it doesn't have a good event handling/signal/AOO
system. I really like Qt's signal/slot mechanism, and I've already
implemented a rought draft that works wonderfully but doesn't handle
DOM objects. Dojo has a neat system that is more AOO--you "listen" to
function calls, and can either get called before, after, or around the
call. I like that, but dojo is largely undocumented.
My idea of the "perfect" system is:
(1) Simplicity. One way to connect everything, and another way to
disconnect. (I don't like dojo's AOO system because of this. Too
complicated.)
(2) DOM events are handled in the same way. That is:
connect(MyObj, "signal", obj, "slot")
connect($('id'), "onclick", obj, "slot")
should work the same.
Before I go off and write a bunch of code, I wanted to ask: What are
you people out there using right now? What is Bob's idea of the perfect
system? What needs to be done and how can I help? I would rather have
this thing written sooner rather than later (as in, in the next
week...) I can't hold off my project manager for perhaps that long but
not much longer.