GWT中使用LESS CSS或SCSS

11

有人能否将 LESS 这种简洁的语法和 GWT UiBinder 这种模块化、易于重构和类型安全的 CSS 结合起来使用?

<ui:style with="com.lesscss.gwt">
    .selector{
        /* Can I haz LESS in here? */
     }
</ui:style>

当然,您可以在GWT中使用LESS -- 您只需要使用非编译的CSS。我希望我的CSS通过LESS编译器,然后通过GWT编译器。

2个回答

5

对于这个问题,没有直接的库。

LESS甚至没有Java编译器,所以我真的不认为它会发生。

假设你可以编写一个预编译程序,可以浏览你的ui.xml文件,编译ui:style节点的内容,并将编译后的版本放回原位。然而,您将遇到持续的问题,因为您的IDE会抱怨CSS代码不正确。


感谢您的出色回答。很有道理,如果没有其他人提出异议,我很快就会接受它。 - logan
2
我只是在公共文件夹中有一个LESS文件和LESS库,我将它们附加到特殊入口点的onModuleLoad()中。这样我的模块就可以被继承,并且当您更改样式时仍然可以观察到样式的变化。遗憾的是,没有样式名称混淆。 - McTrafik
好建议。我也考虑过这个,但在多开发者环境中,模块化和静态代码分析的需求是至关重要的。GWT的CSS资源确保两个开发者不使用相同的命名空间。我希望得到所有这些好处,而不仅仅是混淆。 - logan

2
如前所述,以前没有直接实现该功能的库。但现在有了 ;)!
我最近编写并发布了一个库(适用于GWT的HexaCss),允许将GWT应用程序绑定到外部CSS文件,同时保持类型安全和优化,例如修剪和CSS名称混淆。
您可以像传统的CssResource一样使用它(因此具有类型安全性),但是不是绑定到您的GWT项目内部的CSS文件,而是绑定到任何您想要的外部CSS文件(甚至可以将多个CSS文件绑定到同一个应用程序中,为GWT应用程序提供主题)。
因此,在您的情况下,外部CSS文件将使用HexaCss生成。这是我在许多项目中做的事情。
您甚至可以使用Sass、GSS等。您还可以使用已编写的Bootstrap和Skeleton绑定。
类似于您的问题的示例是这个,其中CSS是使用Less生成的,并在GWT中使用HexaCss,然后可以从UiBinder或Java直接使用。
样例链接:http://lteconsulting.fr/hexacss/demo/sample3/index.html - 这只是一个非常丑陋的演示,仅展示了这个想法。您可以使用顶部的列表框在不同主题之间切换。
希望这能帮到您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接