[Seaside] YUI

C. David Shaffer cdshaffer at acm.org
Tue Oct 30 18:32:45 UTC 2007


Randal,

Have you looked at ExtJS (http://extjs.com)?  I'm developing a project 
based on this widget set for a client.  Many parts of YUI and ExtJS are, 
as Lukas mentioned, not particularly well-suited for Seaside's stateful 
component approach however I think I can find a decent combination of 
both systems' strengths for my current project.  Unfortunately I'm 
tightly constrained timewise (UI demo in about three weeks).  I have 
permission to share the Squeak-ExtJS code (once there is anything worth 
sharing) and I'd welcome other contributions and discussion but I'm not 
in a position to participate in a community development project, if you 
know what I mean.  Maybe after a successful demo though.  Anyway if 
there's one thing I'm struggling with more than anything it is the 
design of the "Javascript in Smalltalk" code which achieves a decent 
balance:

1) Smalltalk code should reflect Javascript code
2) Smalltalk objects to should semantically represent Javascript objects 
(not syntax), if possible
3) The API of the Javascript objects should be evident in Smalltalk

I'm not sure about 3.  Basically it says that for each Javascript class 
we want a Smalltalk class with the same methods (although the Smalltalk 
methods simply produce Smalltalk values to represent their result).  The 
problem with this is, of course, that we can't predict the return types 
of all Javascript methods which makes this approach "shallow" (you can 
send messages to objects that you've created directly but not to objects 
returned by their methods except in the cases where you're sure of the 
interface of the return type).  If we drop 3 then something much less 
concrete than the SUObject hierarchy appears...something more like a 
"proxy" which uses DNU to generate javascript syntax objects.  This is 
my current approach.  The next couple days will tell me a lot about it.  
This could act as a core to both an ExtJS and a YUI implementation...

BTW, "yes", I know about ST2JS.  It might provide a solution but I just 
don't quite see how to make it work yet.

David



More information about the seaside mailing list