海边。在所有主要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