我目前在一个更大的GWT项目中担任网页设计师,我想建议重构我们的CSS。我想从DOM中删除所有类前缀和模糊处理,而是使用干净的级联样式来防止冲突。
我理解为什么GWT以这种方式工作,但是通过我们使用它的方法,如果我们可以拥有更清晰的DOM树,它将极大地加速开发。
即,而不是在DOM中这样的类:
GPJVK4TDFAB-COM-项目名称,项目文件夹项目的子文件夹,CSS-资源 - 实际类名
我更喜欢这个:
的实际类名
理想情况下,开发人员不应该使用其工作流程进行任何更改。我只想全局关闭前缀。我知道在某些情况下这会影响以模块化方式工作的能力,但考虑到我们的项目和工作流程,我认为没有任何缺点。
交叉引用会更容易,如上所述,采用干净,严格的级联方法,我认为不存在碰撞的风险。
答案 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"/>
只会创建类名...“更漂亮”,也就是说,实际的类名将包含在模糊名称中(您可能已启用它)。