对我而言,Seaside的主要观点似乎是它更像普通的"桌面"编程.
控制流看起来更像是"传统"编程而不是"网络"编程.这是一个正确的印象吗?
我知道它是关于Web编程的,但它从程序员那里看起来并不像它.它看起来不仅仅是驱动"桌面"应用程序.这有点澄清这个问题吗?
Seaside的观点并不像桌面编程那样,尽管它确实试图消除Web开发的大部分痛苦.Seaside因两件事而闻名,你可能会认为它们是"像桌面应用程序一样":
使用continuation允许您编写提示用户输入信息的多步骤过程
使用块(闭包)在单击链接,提交表单等时在代码中提供类似事件处理程序的"回调".
这些事情极大地简化了某些Web开发任务,尽管第一部分最终在实践中很少使用.
Seaside提供了许多其他的东西,但是:
能够在Smalltalk中编写Web应用程序(非常高效和愉快)
可组合,可重复使用的"组件"
组件可以委托给其他组件,这些组件只替换页面的那一部分
只要用户使用"后退"按钮,就可以将会话状态和特定状态的轻松管理标记为回滚,以便在执行回调时始终具有正确的值
一个非常好的Canvas API,用于以编程方式生成HTML,JQuery,Scriptaculous
在正在运行的站点上实时调试和修复错误的能力
其中大部分都不是Seaside特有的,但它们有点不同寻常.那么它与其他网络编程有何不同?你可以用Smalltalk写.您不必在代码和模板语言之间来回转换.除非/直到您想要,否则您不必担心表单字段名称,URL等.如果你使用Seaside,你可能不会讨厌网页编程.
人们可能会因为其"桌面编程功能"而发现Seaside,但他们通常会为所有其他东西而闲逛.
你的印象是正确的.Seaside被设计用于我称之为树状控制流程,就像桌面GUI应用程序一样.与Aida/Web相比,另一个Smalltalk Web框架,用于图形控制流程,实际上就是您在网络上的内容.
但是树状控制流在诸如确认对话框之类的情况下非常有用,或者像Facebook上那些频繁出现的弹出窗口一样非常有用.这就是我们在Aida/Web中引入树状控制流的原因,也就是说,我们将两个控制流组合在一起.