JavaEE Web应用的js css images html等如何模块化

一个公司通常有一套通用的开发框,包括后台的java代码和前端的js/css/image/等等,java代码是很好办的,用maven管理,划分出相应的模块,比如

core.jar, common.jar等等,上传到公司的maven库,然后其它项目去依赖就好了。

但是对于webapp下面的东西怎么办呢,比如我们有通用的js/css,还有一些通用的功能,那么就还有jsp,这些如果分发给各个项目组呢?

在网上了解了下,发现有几种现成工具:

1. twitter推出的bower,是一款前端包管理工具,依赖node.js, 我感觉和WebJars很像,一会介绍一下webJars。它主要是帮你管理像jquery, bootstrap这些包,有点像maven去管理你的spring/hibernate这些依赖包一样,更多介绍可参考 http://www.aspku.com/kaifa/javascript/129356.html

2. WebJars : http://www.webjars.org/

我觉得WebJars和bower的思路是一样的,它提供maven/ivy/gradle等多种依赖方式,都是提供标准的第三方包,让你管理这些js更方面,升级更简单。

对于bower和WebJars都可以帮助我们更好的管理js/css的依赖,不用自己去找bootstrap下载然后拷贝到自己的项目里面来,然后又分发给不同的项目组,不用等bootstrap新版本出来后又要去下载更新版本,这大大简化了js框架的管理。

WebJars使用一例:

常用的js等可以以jar包形式加载

<dependencies>

<dependency>

<groupId>org.webjars</groupId>

<artifactId>bootstrap</artifactId>

<version>2.3.0</version>

</dependency>

</dependencies>

然后你的中间件、web框架以静态资源的形式读取

比如我用springmvc,只需配置如下

<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>

在页面引入

<spring:url value="/webjars/bootstrap/2.3.0/css/bootstrap.min.css" var="bootstrapCss"/>

3. maven 的war插件的overlays

我觉得上面两种工具都只是解决js/css等问题,对于公共的jsp怎么办的,其实我是希望搞一个war工程,里面有公共的js/css/jsp,然后其它项目组创建自己的war工程,然后依赖这个公共的war工程就好了,这个问题用overlays就可以很好的解决,具体怎么使用可以看  http://kyfxbl.iteye.com/blog/1678121

摘录一部分在下面

2个web工程,一个是task-sla-web,一个是task-web-dist,packaging类型都是war,目录结构如下:

下面是task-sla-web的pom文件:

Xml代码  

  1. <modelVersion>4.0.0</modelVersion>
  2. <groupId>com.huawei.inoc.wfm.task</groupId>
  3. <artifactId>task-sla-web</artifactId>
  4. <packaging>war</packaging>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <name>task-sla-web</name>

该工程就是打成一个war包,但是这个war是无法运行的,而是稍后用来合并的。(其中放了 一个空的web.xml,因为maven-war-plugin的package goal有强制要求)

下面是task-web-dist的pom文件:

Xml代码  

  1. <modelVersion>4.0.0</modelVersion>
  2. <groupId>com.huawei.inoc.wfm.task</groupId>
  3. <artifactId>task-web-dist</artifactId>
  4. <packaging>war</packaging>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <name>task-web-dist</name>

Xml代码  

  1. <!-- 合并多个war -->
  2. <plugin>
  3. <groupId>org.apache.maven.plugins</groupId>
  4. <artifactId>maven-war-plugin</artifactId>
  5. <version>2.1.1</version>
  6. <configuration>
  7. <overlays>
  8. <overlay>
  9. <groupId>com.huawei.inoc.wfm.task</groupId>
  10. <artifactId>task-sla-web</artifactId>
  11. </overlay>
  12. </overlays>
  13. </configuration>
  14. </plugin>

Xml代码  

  1. <!-- 配置依赖 -->
  2. <dependencies>
  3. <dependency>
  4. <groupId>com.huawei.inoc.wfm.task</groupId>
  5. <artifactId>task-sla-web</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <type>war</type>
  8. </dependency>
  9. </dependencies>

以上片段主要要注意几点:

1、task-web-dist自身的packaging类型也是war

2、在<overlay>中配置要归并的webapp的groupId和artifactId,注意的是,该pom所在的webapp工程是主工程,会覆盖掉所有待归并工程的同名文件,包括web.xml

3、要归并的webapp,必须声明为依赖

归并后的最终war包如下:

其中的文件和.class都是由2个war包归并得到的,task-web-dist是主war包,如果多个war包中存在重名文件,则会被task-web-dist的文件覆盖,比如web.xml

时间: 2024-10-10 00:49:07

JavaEE Web应用的js css images html等如何模块化的相关文章

开发Java web时让Eclipse支持编写HTML/JS/CSS/JSP页面的自动提示

平时用eclipse开发jsp页面时智能提示效果不太理想,其实eclipse也可以像Visual Studio 2008那样完全智能提示HTML/JS/CSS代码,使用eclipse自带的插件,无需另外安装插件,具体步骤如下 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Activation triggers for java的值为:zjava   点击apply按钮 如图: 2.继续打开JavaScript→

Web性能优化之动态合并JS/CSS文件并缓存客户端

在Web开发过程中,会产生很多的js/css文件,传统的引用外部文件的方式会产生多次的http请求,从而加重服务器负担且网页加载缓慢,如何在一次请求中将多个文件一次加载出来?接下来给大家介绍在ASP.NET中动态合并加载多个js或css文件.原理:减少请求服务器的次数达到优化效果先给大家看一下传统引用方式和优化后的比较:1.传统引用方式(下图): 这样的引用方式将会请求5个js文件也就是5次http请求(下图): 2.我们来看看优化后(下图): 大家可以看到修改后只有一次请求,花费的时间节省了很

web项目中关于引入JS/css文件, 浏览器console出现 net::ERR_ABORTED错误的解决方法

如图错误: 引入js/css后,控制台出现的错误! 我的错误则是因为在静态文件夹下的原因. 解决:如果要放在webRoot下的静态(static)文件夹下,需要在springMvc的配置文件中添加上注解(<mvc:default-servlet-handler/>)和(<context:annotation-config></context:annotation-config>),如果有(<context:component-scan />),则不需要第二条

springmvc如何访问到静态的文件,如jpg,js,css

如何你的DispatcherServlet拦截"*.do"这样的有后缀的URL,就不存在访问不到静态资源的问题. 如果你的DispatcherServlet拦截"/",为了实现REST风格,拦截了所有的请求,那么同时对*.js,*.jpg等静态文件的访问也就被拦截了. 要解决这个问题. 目的:可以正常访问静态文件,不可以找不到静态文件报404. 方案一:激活Tomcat的defaultServlet来处理静态文件 <servlet-mapping> &l

Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决(转)

最近项目中使用到Spring3,在感叹Spring3注解配置清爽的同时竟然出现了这个不和谐的事情,实在无法忍受 问题:部署项目后程序加载或用浏览器访问时出现类似的警告,2011-01-19 10:52:51,646 WARN [org.springframework.web.servlet.PageNotFound] -<No mapping found for HTTP request with URI [/sandDemo001/images/1.jpg] in DispatcherServ

ASP.NET MVC 4使用Bundle的打包压缩JS/CSS

打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS文件案中空白.批注及修改JavaScript内部函数.变量名称的压缩手法,能有效缩小文件案体积,提高传输效率,提供使用者更流畅的浏览体验. 在ASP.NET MVC 4中可以使用BundleTable捆绑多个css文件和js文件,以提高网络加载速度和页面解析速度.更为重要的是通过捆绑可以解决IE浏览

在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示(转)

我们平时用eclipse开发jsp页面时智能提示效果不太理想,今天用了两个小时发现了eclipse也可以像Visual Studio 2008那样完全智能提示HTML/JS/CSS代码,使用eclipse自带的插件,无需另外安装插件,具体步骤如下 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Activation triggers for java的值为:zjava   点击apply按钮 如图: 2.继续打开

勤能补挫-简单But易错的JS&amp;CSS问题总结

错误频率较高的JS&CSS问题 勤能补拙,不管是哪门子技术,在实践中多多总结,开发效率慢慢就会提升.本篇介绍几个经常出错的JS&CSS问题,包括事件冒泡.(使用offset.scroll.clientHeight定位元素).模仿JD写个右栏菜单.元素水平和垂直居中.inline元素遇见padding和margin.圆角兼容性处理.这些问题自己都是写代码实验过,所以都会结合Demo一起分析.相信大家也比较容易理解.另外,自己也是小菜一个,有什么解释有误的地方,请大神多多指定. 事件冒泡 DO

让eclipse完全支持HTML/JS/CSS智能提示

平时用eclipse开发jsp页面时智能提示效果不太理想,通过修改eclipse配置让其完全智能提示HTML/JS/CSS代码,具体步骤如下 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Activation triggers for java的值为:".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW"(惯例""要去掉)   点击