[Seaside] Seaside vs. Aida

Sebastian Sastre ssastre at seaswork.com
Sun Mar 30 19:52:45 UTC 2008

Hi Janko,

	nice clarification. I think I discovered my framework uses Seaside as platform to be able to make something conceptually very similar to what you described. Anyway my code would look more similar to a esktop development.


Sebastian Sastre

> -----Mensaje original-----
> De: seaside-bounces at lists.squeakfoundation.org 
> [mailto:seaside-bounces at lists.squeakfoundation.org] En nombre 
> de Janko Mivšek
> Enviado el: Domingo, 30 de Marzo de 2008 16:33
> Para: Seaside - general discussion; Aida/Web general discussion list
> Asunto: Re: [Seaside] Seaside vs. Aida
> 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

More information about the seaside mailing list