当渲染器发送带有组件的WARenderer >> render:
消息时,我需要帮助了解从WAComponent >> renderContentOn:
到#render:
的流程作为 Seaside (Smalltalk Web框架)中的参数。
像这样:aRenderer render: aComponent
。
我试图捕捉关于组件和渲染器如何在Seaside中一起渲染的直觉。所以,我从推荐的渲染方式开始:
aRenderer render: aComponent
从WARenderer >> render:
开始,接着执行随后的执行链。
我能够想出一个比喻来帮助我理解这个流程。隐喻是对象之间的对话形式。但是,这个比喻并不完整。在它的中间有一个海湾,我需要帮助填补。
这就是比喻。
myRenderer render: myComponent.
myR :嘿,组件,我相信你最了解如何在任何渲染器上呈现自己。你能把自己渲染给我吗?
myComponent renderOn: myRenderer.
myC :好的!我虽然需要一些上下文来进行渲染。
myComponent renderWithContext: myRenderer context.
myR :那么,你想要上下文?你得到的环境很好!
myComponent renderWithContext: aRenderContext.
此时我需要帮助填补的鸿沟
aRenderContext visitor visit: myComponent.
也许就此而言
aRenderVisitor visit: myComponent.
aRV :Ping!你回家?我能来吗?
myComponent accept: aRenderVisitor.
myC :是的。来吧,已经来了!
aRenderVisitor visitPainter: myComponent.
aRV :好的,快活一下!
然后,在RenderVisitor >> visitPainter:
:
渲染器重新创建(由myComponent)使用此渲染的上下文(从aRenderVisitor获取),
WAComponent >> renderContentOn:
,并且
然后刷新渲染器。
这就是比喻。我可以照原样使用它。但是如果有人可以帮助插入孔并将其打成形状,我将不胜感激。