>当我使用CSSResource时,css样式将被编译成代码 – 对吧?因此,如果不重新编译应用程序就无法更改它.但我想做的是让风格从“外部”可编辑.
>那么这个CSSResource是什么,因为你不能只是在不再编译应用程序的情况下更改颜色或图像?
>什么是使用CSS的最佳方式,因为有几种方法(.css文件,CSSResource,ui.xml中的样式)可以做到这一点?
我现在的想法是,我只使用普通的CSS文件处理我所有的“可更改”内容并将此文件添加到头部,因为我看不到这个CSSResource的优点.希望有人可以帮助我.谢谢.
这一切都取决于您使用CSS的方式 – 如果您需要应用一些小的更改,首先在Firebug /类似工具中“实时”测试它们.在设计阶段(当您还没有最终确定应用程序样式的视图时),您可能希望使用普通的CSS文件,但只要一般样式澄清,您应该切换到ClientBundle / CssResource.为什么?让我回答一下,写一些关于CssResource’s documentation页面上列出的goals的想法:
>小学
>与非GWT感知的CSS解析器的兼容性(即任何扩展应该是有效的CSS语法)
这并不意味着样式表如果你只是在浏览器中显示它就必然有意义 – 这意味着,我们只想使用有效的CSS语法,而不是一些对其他解析器有胡言乱语的语法糖 – 从你的角度来看可能不那么重要视图(但结果,您不需要更改现有样式的语法)
>语法验证 – 非常重要的一点,恕我直言.你得到的东西就像检查丢失的(可能是拼写错误的)CSS类,语法错误等等 – 这些东西必须(通常,痛苦地)通过一些特定于浏览器的开发人员工具(Firebug)进行跟踪.在这里,您可以在编译期间(或者在Google Eclipse插件的帮助下更快)获得这些错误.
> Minification – 这不是你的普通缩小,你也得到selector和property合并.也见下一点.
>利用GWT编译器 – 如果未使用CSS类(GWT编译器可以进行这样的区分,因为它具有整个应用程序的概述),它将被修剪并且不包括在编译的代码中.你有多少次发现一些设计更改后留下的CSS类?这样可以解决这个问题(另请参阅CSS模块化点)
> Different CSS for different browsers, automatically – 由于这种方式生成的CSS包含在您的JS代码中,它可以(并且)针对目标浏览器进行优化 – 无需在每个排列中包含冗长的IE黑客!
> Static evaluation of content – 之前已经提到过
>中学
>基本的CSS模块化
>通过依赖注入API样式 – 您可以根据需要注入CssResources(例如,为了方便应用程序中的自定义主题)
>小部件只有在需要时才可以注入自己的CSS – 这是我最喜欢的点之一,虽然起初我没有看到它的意义 – 你将(通常)巨大的单片CSS文件分成小模块,每个Widget一个它使用UiBinder(内部使用CssResource)加上可能是一个全局CssResource用于应用程序范围的样式.这样可以更清晰,更容易维护CSS样式(至少,根据我的经验).这也意味着,如果你的代码没有使用那个特定的Widget(也许是因为你已经使用了ocde拆分并且尚未加载),你将不会下载这些样式.
> BiDi (Janus-style?) – 双向文本支持,尚未使用它但the docs看起来很有前途:)
> CSS image strips – 自动化image sprites代 – 我还能说什么?