1

在 GWT 小部件中指定元素位置的最佳实践是什么?

假设您有一个任务:在页面布局中放置一组小部件。您将使用什么来按某种顺序定位所有按钮和输入?

  1. 标准 HTML 标记,带有用于定位的表格/div + CSS 样式
  2. GWT 小部件:面板、网格、表格 + 用于定位的 CSS 样式
  3. GWT 小部件:面板、网格、表格 + 用于定位的原生属性

如果是 2 或 3 - 你会用什么来重现带有 colspans、固定宽度列和填充的标准 HTML 表格?

ps UIBinder 和 XML 标记。GWT 2.4


我的观点: GWT 的最大优势之一是能够防止程序员编写 HTML 标记并为接口添加跨浏览器支持。我们不应该放弃这些点,所以最好选择 p.3 并尝试仅使用 CSS 进行装饰 - 即颜色、字体等。

另一种观点: 将任何样式内联放置是一个坏主意。通过在 XML 标记中指定小部件的属性,我们实际上就是在这样做。此外,GWT 没有足够的小部件来生成正常的布局。例如,您需要创建一个具有 collspans 和固定列宽的简单表格。你会怎么做?看起来你必须将几个 Horizo​​ntalPanels 嵌入 VerticalPanels,在每个人中指定宽度/高度,并以此生成一篇很棒的 XML 论文。


那么你的意见是什么?

4

1 回答 1

7

GWT 生成可怕的、可怕的、不好的、非常糟糕的 HTML。这只是我的看法,其他人可能不同意。但是我每天都在和 GWT 打交道,无限嵌套的 div 和表格足以让一个新手 Web 开发人员哭泣。而且它的所有样式都是内联的,所以如果你想用外部样式表应用或覆盖它们,你最终会得到一堆!important声明。

然而,它确实生成了非常可爱的 JavaScript。作为曾经不得不维护和开发极其复杂的 DHTML 项目并为 IE 5.5 及更高版本提供支持的——我不得不承认,这是 GWT 最好的部分。

不可否认,我是一个 DHTML 纯粹主义者,早在我成为软件开发人员之前就已经是一名 Web 开发人员。我个人认为 HTML 应该只用于结构,CSS 应该提供样式,JavaScript 应该提供其他功能,三者应该完全分开。GWT 在最后一部分——JavaScript——方面做得很好,但它生成的 HTML 冒犯了我的感受,而且至少比它必须的复杂十倍。但话又说回来,大多数生成的代码都是。(考虑在 MS Word 中创建的网站或从 WYSIWYG 风格的编辑器生成的 HTML。)

鉴于复杂的基于 Web 的应用程序——以及对滚动 Ruby on Rails 应用程序的限制——我很乐意使用 GWT。但我的应用程序几乎是FlowPanels(编译为 HTML <div>s)和 GWT 生成的 Javascript 的集合,顶部有我自己的 CSS。因此,在 OP 规定的情况下,我将使用 FlowPanel,添加元素(例如 GWT 表单元素),应用任何服务器端逻辑,然后使用外部 CSS 进行样式设置。

在查看 GWT 时,您可能需要考虑是否需要在以后重新设计您的应用程序,或者是否希望让设计师或其他非程序员创建模板/样式/CSS 以在上面应用。如果出现这种情况,那么在设计 GWT 应用程序时要非常小心,不要应用样式而是应用类和 id。

另外作为测试方面的说明:如果您打算使用 Selenium 进行 UI 测试,那么您真的很想在事物上挂上 id。生成的 HTML 中的 xpath 实际上是不合适的,并且可以延伸到数百个字符的长度。

话虽如此,我很想听听其他人的经历,特别是如果他们与我的不同。

tl;博士版本:

  1. GWT 生成的 HTML 对于嵌套表和多层嵌套<div>s 非常糟糕(超过必要)
  2. GWT 不生成 CSS 样式表,而是将所有样式内联。这使得使用外部样式表变得乏味和困难。
  3. GWT 在跨浏览器 Javascript 方面表现出色。
  4. 默认情况下,GWT 不会将 id 附加到元素,因此如果您打算使用像 Selenium 这样的工具,则必须手动添加自己的 id,否则将面临前所未有的长 xpath。
于 2012-06-28T20:27:01.110 回答