[Seaside] Seaside vs. Aida
Janko Mivšek
janko.mivsek at eranova.si
Sun Mar 30 21:17:31 UTC 2008
stephane ducasse wrote:
> ok I see
> but could you show the code of the multicounter example that nicolas
> mentioned.
> because I could not see how you got the 4 counters in a row.
I suppose that he did an equivalent of such code:
viewMAin
| e |
e := WebElement new.
e
add: CounterComponent new;
add: CounterComponent new;
add: CounterComponent new;
add: CounterComponent new.
self pageFrameWith: e title: 'multicounter'.
So it is actually the same way as you show in your Seaside example.
Janko
> On Mar 30, 2008, at 9:33 PM, Janko Mivšek wrote:
>
>> Hi Stef,
>>
>> Let me first rename topic to Seaside vs. Aida, because that's more
>> appropriate to the Lucas blog post anyway. He pointed to other
>> "traditional" frameworks, not Aida :)
>>
>> stephane ducasse wrote:
>>
>>> Now I think that there is room for seaside and aida side by side. It
>>> would be nice if both frameworks would mention their own limits.
>> > It seems that in Aida you cannot easily embed multiple times the
>>> same component on a page.
>>
>> Ok, let me start explaining Aida's component model more broadly,
>> because it seems that is one of major misunderstandings when comparing
>> both frameworks. Reason seems to be simply in naming and nothing more.
>>
>> In Aida we have a WebElement which start covering primitive elements
>> like images, links or text, and ends up to the whole web page.
>> WebElement can namely be a composite of sub elements down to primitive
>> ones. We have therefore a consistent component model from a web page
>> down to primitive elements.
>>
>> Just recently we started using a name "component" and introduce a
>> class WebComponent (which is currently just an empty subclass of
>> WebElement) to more clearly separate components from mere elements.
>> But where elements end and components begin, that's now a question.
>>
>> Components are supposed to be a standalone, reusable, heavy ajaxified
>> parts of web page, but that's already every web element in Aida!
>> Introduction of WebComponent class is therefore currently more
>> conceptual than practical, but we hope it will evolve in practicality
>> through the time.
>>
>> Let me allow to make a short comparison with a Seaside component
>> model. Here a web page is a root component and you can have also
>> subcomponents (children). So far so good, we are the same.
>>
>> First difference is how those components (say web pages) are connected
>> and how user navigates among them, another difference is how both
>> component models continue building a web page down to a primitive
>> elements. Let we look at later for now.
>>
>> In Seaside you start painting a component, using a hierarchy of
>> blocks. In Aida you continue building with smaller and smaller
>> WebElements. Aida therefore continue using consistently the same
>> component model down to the lowest level of web pages: basic text,
>> images etc.
>>
>> One of the consequences of this consistency is how long are methods in
>> Aida. You'll see that almost all are short, inside 10 line
>> recommendation. I think this shows well the strengths of Aida
>> component model. Other is maybe that users find Aida easy to use. Maybe.
>>
>> Let me finish with a component model example. That's how it looks a
>> page creation method for squeak.org demo http://squeaksite.aidaweb.si :
>>
>> pageElement
>> | e t |
>> e := WebElement newId: #container.
>> self headerElementTo: e.
>> t := WebElement new.
>> t table width: 1; cellSpacing: 0; cellPadding: 0.
>> t cell valign: #top. t cell table cellSpacing: 0; cellPadding: 0.
>> t cell cell add: self menuElement. t cell newRow.
>> t cell cell add: self linksElement. t cell newRow.
>> t cell cell add: self sideLogosElement.
>> t newCell valign: #top;
>> add: self bodyElement. "contents"
>> t newCell valign: #top. t cell table cellSpacing: 0; cellPadding: 0.
>> t cell cell add: self downloadsElement. t cell newRow.
>> t cell cell add: self newsElement. t cell newRow.
>> e add: t.
>> ^e
>>
>> ...then header element:
>>
>> headerElementTo: e
>> e add: self headerLinksElement.
>> e add: self headerTitleElement.
>> e add: self headerActionsElement.
>> e add: self headerSessionElement.
>>
>> ... and finally login part in up right corner:
>>
>> headerLoginElement
>> | e |
>> e := WebElement newDiv.
>> self session isLoggedIn
>> ifTrue:
>> [e addText: self app session user nameSurname, ' | '.
>> e addLinkTo: self site admin text: 'Logout' view: #logout]
>> ifFalse:
>> [e addLinkTo: self site admin text: 'Login' view: #login].
>> ^e
>>
>>
>> Best regards
>> Janko
>>
>>
>>
>>
>> --Janko Mivšek
>> AIDA/Web
>> Smalltalk Web Application Server
>> http://www.aidaweb.si
>> _______________________________________________
>> seaside mailing list
>> seaside at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>
>
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
--
Janko Mivšek
AIDA/Web
Smalltalk Web Application Server
http://www.aidaweb.si
More information about the seaside
mailing list