在GWT小部件中指定元素位置的最佳做法是什么?
想象一下你有一个任务:在页面布局中放置一组小部件。您会用什么来按顺序放置所有按钮和输入?
如果是2或3 - 您将使用什么来重现带有colspans,固定宽度列和填充的标准HTML表?
PS UIBinder和XML标记。 GWT 2.4
我的观点: GWT的一大优势是能够阻止程序员编写HTML标记并为界面添加跨浏览器支持。我们不应该放弃这些点,以便更好地选择p.3并尝试仅使用CSS进行装饰 - 即颜色,字体等。
另一种观点: 将内嵌任何样式放置是一个坏主意。通过在XML标记中指定小部件的属性,我们确实正是这样做的。 此外,GWT没有足够的小部件来生成正常的布局。例如,您需要创建一个包含collspans和固定列宽的简单表。你会怎么做?看起来你必须在VerticalPanels中嵌入几个HorizontalPanels,在每个人中指定宽度/高度,并由此产生一篇很好的XML论文。
那你的意见是什么?
答案 0 :(得分:7)
GWT会产生可怕的,可怕的,不好的,非常糟糕的HTML。这只是我的意见,其他人则不同意。但我每天都在使用GWT,无限嵌套的div和表足以让新手网络开发人员哭泣。并且它的所有样式都是内联的,因此如果您想使用外部样式表应用或覆盖这些样式,最终会得到!important
声明的林。
不可否认,我是一名DHTML纯粹主义者,在我成为软件开发人员之前很久就成为了一名网络开发者。我个人认为HTML应该仅用于结构,CSS应该提供样式,JavaScript应该提供其他功能,并且这三者应该完全分开。 GWT在最后一部分是相当不错的 - JavaScript - 但它生成的HTML冒犯了我的敏感性,并且至少比它的复杂性高十倍。但话说回来,大多数生成的代码都是。 (考虑使用MS Word创建的网站或从WYSIWYG风格的编辑器生成的HTML。)
鉴于一个复杂的基于Web的应用程序 - 以及对滚动Ruby on Rails应用程序的限制 - 我很乐意使用GWT。但我的应用程序几乎是FlowPanel
s(编译为HTML <div>
)和GWT生成的Javascript的集合,我自己的CSS在顶部。因此,在OP规定的情况下,我将使用FlowPanel,添加元素(例如GWT表单元素),应用任何服务器端逻辑,然后使用外部CSS进行样式化。
在查看GWT时,您可能想要考虑以后是否希望重新设计应用程序,或者希望让设计人员或其他非程序员创建模板/样式/ CSS以应用于顶部。如果是这样的话,当你设计你的GWT应用程序不应用样式而不是应用类和id时,你会非常小心。
另外作为测试方面的注意事项:如果您计划使用Selenium进行UI测试,那么 生成的HTML中的xpath实际上是不合适的,并且可以长达数百个字符。
话虽如此,我对听到其他人的经历非常感兴趣,特别是如果他们与我的不同。
tl; dr版本:
<div>
的多层(超过必要)