[Seaside] Seaside vs. Aida
stephane ducasse
stephane.ducasse at free.fr
Mon Mar 31 16:08:48 UTC 2008
thanks I see.
Stef
>
>> 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
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
More information about the seaside
mailing list