|LANGREITER.COM plain, simple|
Avi Bryant on [create Squeak-L], 2002-02-01
- complete separation of html from logic: each page is described by an html template with no code or special tags of any kind, and a class with no html snippets, url generation, or direct interaction with the HTTP request. Let the designers do straight html and the programmers do straight smalltalk. However, the html can be in the image instead of external files (and in fact I write most of my html in a lispy-syntax using array literals).
- a set of "bindings" connects the template elements to the smalltalk elements. These can usually be inferred through naming conventions, but can also be specified explicitly. The basic idea is that form elements are connected to instvars (eg, the system makes sure that a particular input and a particular instvar always have the same value), and links/buttons are connected to methods - when you click on that link, that method is called. The method may take an argument giving some context (ie, which of a list of items was clicked on).
- pages can be called like subroutines and return values to their caller; ie, inside a method called from a link, a series of other pages can be called; the browser will be forwarded through them. When they return, you will be back at the original page. This allows complex multipage control flow to be specified in a single method. As a really simple example, the basic Page class implements #inform:, #confirm:, and #confirm:orCancel: that work exactly like the MVC methods, allowing code like:
removeItem: anItem- sophisticated backtracking support: by using snapshots of state, continuations, etc, the system can be made quite transparent to the use of the browser back button; for example, subroutine calls to other pages may return multiple times to the same spot (ie, in the above example, someone could use the back button to choose a different branch of the #confirm:). This can be disabled if it isn't needed.
- pages or entire applications can be embedded as subcomponents within
another page, or wrapped around them. This allows complex widgets ike
trees, tabs, navbars, etc to be built and reused. Subcomponents use the same transparent bindings system as form elements to sync data with their parent page.
- it comes with some nice goodies like web-based inspector, profiler, and
- it currently works with [create PWS], [create Comanche], or Apache, and can be made to work with anything else quite easily.
I'm posting this even though we haven't had time to pull together a release yet, since there seemed to be some interest in web apps. Goran, if you happen to want to coordinate, perhaps we can do so off-list. I don't actually expect you to use our work instead of your own framework (it's very nice to have a framework you know to the smallest detail, after all) but no doubt we can learn something from each others' experiences.
Oh - the name: it builds on work I did in Ruby called IOWA (Interpreted Objects for Web Applications - there's some info at beta4.com/iowa), but the Squeak version has advanced far enough beyond IOWA that we may call it something else. The other alternative is SEASIDE, which has something to do with eggplants. But more on that later, perhaps. ;-)
GET YOUR MOVE ON
ALMOST ALL ABOUT YOU
So log in, fella — or finally get your langreiter.com account. You always wanted one.
Nearby in the temporal dimension:
... and 80 of the anonymous kind.
Click on for a moderate dose of lcom-talk. This will probably not work in Lynx and other browser exotica.
RECENT EDITS (MORE)
Uncut Games bei Gameware
Offenlegung gem. §25 MedienG:
Christian Langreiter, Langkampfen