1

在 Seaside 中,在所有这些renderContentOn:方法中,我都可以使用 HTML 画布对象来组装我的 DOM 树。

我目前正在为我的组件编写一堆帮助程序,因为我正在使用 Twitter Bootstrap 进行样式设置,并且不想一直编写所有样板代码(<div>s en mas)。

对于这种设置方式,对我来说最简单的方法是简单地(我想避免with: aBlock在这些助手中使用)写出用于包装 DIV 的 HTML,如下所示:

html html: '<div class="control-group">'.

我有什么理由不这样做吗?有什么缺点吗?

4

3 回答 3

6

使用 HTML 画布有很多优点:

  • HTML 画布确保有效标签、有效标签结构、所有标签都正确关闭(在编译时),并且内容正确转义。
  • HTML 画布确保属性有效,所有属性都正确关闭,内容正确转义。
  • 由于上述两个原因,HTML 画布自动避免了跨站点脚本 (XSS) 漏洞的可能性。
  • renderOn:HTML 画布通过启用标签(简单函数调用)、演示者(在对象中)和组件(在组件中)的组合来实现更好的可重用性renderContentOn:
  • HTML 画布避免生成不必要的空格。
  • 使用 HTML 画布可以使用 Smalltalk IDE 提供的 HTML 代码标准工具:发送者、实现者、重构引擎(提取到方法、提取到组件、内联方法、自动重写……)等。

我同意在极少数情况下不值得使用 HTML 画布:例如,当需要将来自外部源的大型静态垃圾嵌入到页面中时。

于 2012-05-24T20:46:34.900 回答
1

我认为渲染这样的静态 html 片段没有真正的缺点。

但是,您可能想查看 Twitter bootstrap 的 Seaside 集成:http: //twitterbootstrap.seasidehosting.st/

于 2012-05-24T15:51:03.153 回答
0

改写 Lukas 的一个论点:它基本上不是 DRY。如果您只使用一次,则没有问题。如果您必须多次使用它,画布允许您使用 smalltalk 为您提供的所有干净重用功能。

于 2012-05-25T13:15:23.533 回答