可以删除GWT生成的HTML中的所有类前缀吗?

时间:2014-10-24 10:26:10

标签: css gwt obfuscation

我目前在一个更大的GWT项目中担任网页设计师,我想建议重构我们的CSS。我想从DOM中删除所有类前缀和模糊处理,而是使用干净的级联样式来防止冲突。

我理解为什么GWT以这种方式工作,但是通过我们使用它的方法,如果我们可以拥有更清晰的DOM树,它将极大地加速开发。

即,而不是在DOM中这样的类:
GPJVK4TDFAB-COM-项目名称,项目文件夹项目的子文件夹,CSS-资源 - 实际类名

我更喜欢这个:
实际类名

理想情况下,开发人员不应该使用其工作流程进行任何更改。我只想全局关闭前缀。我知道在某些情况下这会影响以模块化方式工作的能力,但考虑到我们的项目和工作流程,我认为没有任何缺点。

交叉引用会更容易,如上所述,采用干净,严格的级联方法,我认为不存在碰撞的风险。

1 个答案:

答案 0 :(得分:3)

如果您使用的是CssResource,则需要注释所有不希望使用@external进行模糊处理的类:

interface MyCssResource extends CssResource {
  String obfuscated();
  String legacySelectorA();
}

interface Resource extends ClientBundle {
  @Source("my.css")
  MyCssResource css();
}
@external legacySelectorA, legacySelectorB;
.obfuscated .legacySelectorA { .... }
.obfuscated .legacySelectorB { .... }

.obfuscated会被混淆,而.legacySelector则不会。

有关详细信息,请参阅documentation

没有“禁用混淆”全局设置,因为CssResources的整个概念是这样的,您不必担心重复的类名,只有GWT可以重命名您的类才能保证。 其他可用于CssResource的“杠杆和旋钮”,你可能偶然发现,但无济于事:

  • <set-configuration-property name="CssResource.obfuscationPrefix" value="empty" />只会导致"minimal-length selector names",但仍然会混淆。
  • <set-configuration-property name="CssResource.style" value="pretty"/>只会创建类名...“更漂亮”,也就是说,实际的类名将包含在模糊名称中(您可能已启用它)。