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。但我的应用程序几乎是FlowPanel
s(编译为 HTML <div>
s)和 GWT 生成的 Javascript 的集合,顶部有我自己的 CSS。因此,在 OP 规定的情况下,我将使用 FlowPanel,添加元素(例如 GWT 表单元素),应用任何服务器端逻辑,然后使用外部 CSS 进行样式设置。
在查看 GWT 时,您可能需要考虑是否需要在以后重新设计您的应用程序,或者是否希望让设计师或其他非程序员创建模板/样式/CSS 以在上面应用。如果出现这种情况,那么在设计 GWT 应用程序时要非常小心,不要应用样式而是应用类和 id。
另外作为测试方面的说明:如果您打算使用 Selenium 进行 UI 测试,那么您真的很想在事物上挂上 id。生成的 HTML 中的 xpath 实际上是不合适的,并且可以延伸到数百个字符的长度。
话虽如此,我很想听听其他人的经历,特别是如果他们与我的不同。
tl;博士版本:
- GWT 生成的 HTML 对于嵌套表和多层嵌套
<div>
s 非常糟糕(超过必要)
- GWT 不生成 CSS 样式表,而是将所有样式内联。这使得使用外部样式表变得乏味和困难。
- GWT 在跨浏览器 Javascript 方面表现出色。
- 默认情况下,GWT 不会将 id 附加到元素,因此如果您打算使用像 Selenium 这样的工具,则必须手动添加自己的 id,否则将面临前所未有的长 xpath。