海邊。在所有主要Smalltalks(吱吱聲,pharo,寶石,視覺作品,VA,海豚,gst)。 它可以幫助您避免模板,這是在嘗試將佈局與業務代碼分開時的主要代碼異味。
它使用一個生成的代碼(+單獨的CSS)的工作樣式。這意味着您可以很好地重構和構建代碼。從海邊示例:
renderContentOn: canvas
canvas form
class: 'eventEditor';
with:[
self renderWhoOn: canvas;
renderWhatOn: canvas;
renderWhenOn: canvas;
renderWhereOn: canvas;
renderIsGameOn: canvas;
renderGameTypeOn: canvas;
renderButtonsOn: canvas]
其中canvas類是一個html構建器。 Smalltalk具有級聯(;),所以第一個自我發送renderWhoOn:,然後自發送renderWhatOn :. renderWhoOn:方法看起來像這樣
renderWhoOn: canvas
self decorateDivAndLabel: 'Who' on: canvas around: [
canvas select
id: tagId;
selected: model who;
list: model whoList;
callback: [:value | model who: value]]
Smalltalk具有匿名方法(塊)。在decorateDivAndLabel:上:圍繞:方法 第一渲染本身,然後其塊的值:
decorateDivAndLabel: aString on: canvas around: aBlock
canvas div: [
canvas label
for: (tagId := canvas nextId);
with: aString,':'.
aBlock value]
(字符串相結合,與逗號操作者而不是+)。
同意。但是有些框架在鼓勵適當的分離方面比其他框架更好。這個問題的目的是爲了讓你認爲在這方面哪些是非常好的。 – Leif 2009-04-17 17:51:08
哎呀,錯過了你的編輯! – Leif 2009-04-17 17:51:49
是啊...我想快速總結和發佈,然後在編輯中跟進更多細節。當我還在打字時,給OP提供一些思考/閱讀的內容。 – 2009-04-17 17:54:26