2012-12-13 47 views
14

我正在寻找一种在开发过程中按需要在服务器端编译CSS LESS文件的方法。例如,如果浏览器向/assets/css/foo.css发出请求,我希望服务器注意到有一个/assets/css/foo.less文件,然后将该文件编译并返回结果的css。我猜测必须有一个LESS servlet能够做到这一点?用于java web应用程序的动态LESS编译器?

我运行Tomcat 7与Spring MVC应用

如何配置Java Web应用程序对飞LESS编译呢?

回答

14

我觉得你在找什么是Servlet Filter。我不知道一个现成的一个没有编译,并已开始使用lesscss-java,但现在我可以看到有一个更大的项目称为Web Resource Optimizer for Java - wro4j与服务器端LESS support

+1

<link type="text/css" rel="stylesheet/less" href="${...}/style.less" /> <script>(window.less = window.less || {}).env = 'development';</script> <script src="${staticContext}/lib/less-1.3.3.js"></script> 

在你的HTML

的督促,使用编译样式:

用于开发,使用官方少CSS JS编译器,汇编上飞只是关于使用wro4j进行少量编译的提示:http://code.google.com/p/wro4j/wiki/AbstractProcessorsFilter –

+0

@AlexObjelean如果您想要使用过滤器,该怎么办?仅在开发过程中? – dtrunk

+0

WroFilter有一个启用/禁用标志。您可以将其设置为仅开发,并且所有内容都应该可以在没有其他更改的情况下使用 –

7

这将是更简单(和更有效的)首先编译您的Web应用程序的编译过程中,您的较少的文件到CSS文件。
作为一个例子,使用Maven的情况下,我们使用lesscss-maven-plugin编译目标,过程来源相),以从更小的文件生成CSS文件。然后,只有文件被使用并打包在webapp中。否较少文件是动态使用的。
另一个优点是,在部署webapp之前编译的文件较少,因此编译错误可以在更早的时候检测到。

结构示例的pom.xml:

<plugin> 
    <groupId>org.lesscss</groupId> 
    <artifactId>lesscss-maven-plugin</artifactId> 
    <version>1.3.0</version> 
    <configuration> 
     <sourceDirectory>${project.basedir}/src/main/webapp/less</sourceDirectory> 
     <outputDirectory>${project.build.directory}/${project.build.finalName}/css</outputDirectory> 
     <compress>true</compress> 
     <includes> 
      <include>main.less</include> 
     </includes> 
    </configuration> 
    <executions> 
     <execution> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
+9

我认为这是很好的,然后进入生产时,当设计师只是摆弄设置运行maven每次你改变一个小东西杀死生产力 – ams