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