WebJars是服务器端开发人员(例如谦卑的仆人)在用于服务器端库的同一程序包管理工具中管理客户端资源(如Bootstrap,jQuery等)的简便方法。
本质上,WebJars所做的是将JAR的META-INF / resources中的客户端资源(CSS或JavaScript)的设置版本打包,然后将其上传到Maven Central。 然后,任何兼容Java EE的Web容器都会在静态URL下提供资源。 例如,对于JAR包装的META-INF/resources/webjars/bootstrap.3.0.3/js/bootstrap.js
,可以由webjars/bootstrap/3.0.3/css/bootstrap.css
引用。
大多数提供程序都提供其资源的精简版本,并且将其打包在JAR中,因此使用精简资源是理所当然的事情(当然,如果精简资源是打包在一起的)。 但是,当使用多个WebJars时,这会增加浏览器请求的数量。 在WebJars的上下文之外,可以使用wro4j轻松实现最小化请求数,该工具可通过预处理器和后处理器列表管理资源的最小化和合并。 在较早的文章中已经描述了典型的wro4j用例。
好消息是,可以通过wro4j.xml配置文件轻松集成WebJars和wro4j。 就目前而言,wro4j.xml配置资源合并。 这些资源可能来自各种来源。 通常,它们是内部资源,由它们相对于webapp根的路径引用:
/sample.css
但是,wro4j的功能是能够引用其他类型的资源,包括打包在JAR内的资源:
classpath:META-INF/resources/webjars/bootstrap/3.0.3/css/bootstrap.css
仅通过此配置行,我们就可以将WebJar中的资源与其他资源合并。 从这一点开始,合并的资源可以引用为我们Webapp内部的单个资源。 下面显示了一个wro4j配置文件,该文件从内部sample.css
和Bootstrap WebJar创建了compound.css
文件。
<?xml version="1.0" encoding="UTF-8"?>
<groupsxmlns="http://www.isdc.ro/wro">
<groupname="compound">
<css> classpath:META-INF/resources/webjars/bootstrap/3.0.3/css/bootstrap.css </css>
<css> /sample.css </css>
</group>
</groups>
附件提供了Maven / IntelliJ格式的示例项目。
尽管使用单一JavaScript精简资源(和CSS的精简资源)可以提高HTTP / 1.1的性能,但HTTP / 2.0似乎并非如此。