在Maven中前端构建实践

NodeJS为前端技术的发展带来了一次革新,层出不穷的前端库、框架以及打包工具让大家应接不暇,然而这使得前端技术越来越依赖于NodeJS,基于NodeJS编写的前后台项目可以使用同一编译或者打包工具进行管理从而做到无缝的前后端版本控制以及联调等事情上的统一。


在这样的背景下,Java微服务也需要在项目内实现前端项目的统一打包处理,完成前后端的自动化。那么问题就产生了,我们需要在Maven打包时提供一个基于NodeJS的构建插件,接下来我将介绍frontend-maven-plugin。


该插件直接将NodeJS以及NPM下载安装到项目本地,与系统环境中的NodeJS隔离开来,降低了服务迁移中服务对服务器NodeJS版本的依赖,提高了服务的可移植性。同时,服务的前端与后端又尽可能的相对隔离,最大限度的减少前后端的相互作用,提高开发效率。前端开发人员依旧在服务项目中使用本地NodeJS进行开发调试,运维在生产打包时运行查件将前端dist文件打入相应的war包或者jar包中完成部署。



接下来介绍一下插件的相关配置以及使用方法



代码示例-1中,configuration标签中涉及到了两个配置项,一个是installDirectory,该配置项是用于指定项目中NodeJS以及NPM的安装目录;另一个是workingDirectory,这一配置项用于指定静态资源目录,既含有package.json的前端静态资源的相对目录,如果该目录未指定将默认为Maven打包根目录既pom.xml目录下。


<plugin>

    <groupId>com.github.eirslett</groupId>

    <artifactId>frontend-maven-plugin</artifactId>

       <version>1.4</version>

       <configuration>

           <installDirectory>target</installDirectory>

           <workingDirectory>src/main/static/</workingDirectory>

       </configuration>

       ……

</plugin>

代码示例-1


配置完成后,我需要执行一些命令来安装NodeJS、NPM以及前端构建所需要的node_modules,同时在安装完成后来执行打包等命令来完成前端构建。下面的代码示例-2中我们看到插件的命令是由一个executions组成,而一个executions又是由多个execution组成共同完成前端构建的。在这些执行任务中,首先是install node and npm的命令,完成项目目录下NodeJS与NPM的安装,该命令中可以指定NodeJS与NPM的版本,来提高前端开发本地开发环境与生产环境的一致性。接下来就是执行一系列node_modules安装以及打包构建项目的命令。值得一提的是插件支持npm,yarn,bower,grunt,gulp,jspm,karma以及webpack提供了诸多的前端构建的选择。


<plugin>

   ……

   <executions>

       <execution>

           <id>install node and npm</id>

              <goals>

                  <goal>install-node-and-npm</goal>

              </goals>

              <configuration>

                  <nodeVersion>v7.4.0</nodeVersion>

                  <npmVersion>4.0.5</npmVersion>

              </configuration>

        </execution>

        <execution>

            <id>npm install</id>

            <goals>

               <goal>npm</goal>

            </goals>

            <configuration>

               <arguments>install</arguments>

            </configuration>

            </execution>

            <execution>

               <id>npm build</id>

               <goals>

                  <goal>npm</goal>

               </goals>

               <configuration>

                  <arguments>run build</arguments>

               </configuration>

         </execution>

    </executions>

</plugin>

代码示例-2


代码示例-3中,通过downloadRoot可以切换NodeJS下载的镜像来源,若出现国外镜像无法使用的状况时,需要切换国内镜像。


<execution>

    <id>install node and npm</id>

    <goals>

       <goal>install-node-and-npm</goal>

    </goals>

    <configuration>

       <nodeVersion>v7.4.0</nodeVersion>

       <npmVersion>4.0.5</npmVersion>

       <downloadRoot>http://npm.taobao.org/mirrors/node/<downloadRoot>    

     </configuration>

</execution>

代码示例-3


当然也可以像代码示例-4中一样指定NodeJS以及NPM的镜像。


<plugin>

    <groupId>com.github.eirslett</groupId>

    <artifactId>frontend-maven-plugin</artifactId>

       <version>1.4</version>

       <configuration>

           <installDirectory>target</installDirectory>

           <workingDirectory>src/main/static/</workingDirectory>

           <nodeDownloadRoot>http://npm.taobao.org/mirrors/node/<nodeDownloadRoot>

            <npmDownloadRoot>http://npm.taobao.org/mirrors/npm/<nopmDownloadRoot>

       </configuration>

       ……

</plugin>

代码示例-4


注意

插件会将NodeJS下载到Maven本地仓库中缓存起来,再次打包时会直接取用缓存中的NodeJS包来打包。

这样就造成了首次下载失败,再次下载需要删除掉本地缓存。


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
1.1、课程的背景 该课程是北风品牌课程-《BF-TECH J2EE软件工程师就业课程》 第五阶段:项目实战一、开发基于SSH2+Maven+JeasyUI+MySQL技术的 【易买网电子商务交易平台】课程。 jQuery EasyUI简称jeasyui,也就叫easyui,是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签。现在几乎只要软件开发项目,越来越多的公司采用富客户端技术,由于extjs过于宠大,及学习成本较高,更多的企业选择采用小巧而易用的jeasyui作为前端展示框架Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目,而使用 Ant 则需要十几行。事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 1.2、课程内容简介 由于富客户端技术进一步扩展浏览器功能,使之提供更加高效和友好的用户接口,越来越多的企业和开发人员选择使用富客户端技术构建商业应用,本课程主要是介绍了解最流行的富客户端框架jquery - easyUI API及熟悉掌握其高级特性,并结合SSH2框架Maven实现富户端商业应用的全部开发过程. 2.2、课程学习目标(我们提供什么?) 目标一. 了解Maven的环境配置以及如何在项目进行运用管理 目标二. 了解java框架技术,熟悉SSH框架搭建的全过程 目标三. 可以让学员迅速掌握JEasyUI的API及使用技巧 目标四. 可以让学员熟练使用JEasyUI快速构通富客户端的界面及与后台服务器交互的注意事项与技巧 目标五. 通过前台和后台的分离,让学生即掌握JSP使用技巧又熟练JEasyUI的使用 目标六. 通过完整的项目实战,全面的演示了JEasyui+SSH2+Maven+MySQL技术的综合使用步骤、过程、注意事项及技巧 目标七. 通过本课程的学习,为学员以后开发使用JEasyui与后台Java框架技术结合的大型Java项目提供了完整示范,奠定基础 2.3、课程特色 特点一、讲师具有一线的实战经验与丰富的教学经验,课程即讲解案例实现思路、理论与原理又讲解实战技巧与注意事项,即照顾到基顾学员,又照顾到有一定实战经验想要提高自己的学员。 特点二、在每节开始之前先简单回顾上一节所讲的主要内容,并对本节所讲的内容先进行概述,讲解概念、技术要点,设计实现思路等内容,最后总结本次课程的要掌握的要点,讲师授课采用先理论,后实战的方式,由浅入深,符合人们接受知识的自然规律。 特点三、学习的过程学员要理论和实践相结合,讲过的代码学员自行完成修改和调试,以巩固加深学习效果 2.4、课程亮点 亮点一、Structs2.x+Spring3.x+Hibernate4.x+ JEasyui1.3.4+Maven3 各框架jar包等采用的均是目前为止最新的版本,讲解时使用的这些jar及框架的最新技术,如此组合在国内尚属首部、技术的前沿性可以保证让您的技术在二到三年内不会落伍. 亮点二、理论与实战相结合,由浅入深。即照顾到基础学员,又照顾到有一定经验的学员,讲解过程留有学生思考的时间. 亮点三、课程绝大多数代码均是一行一行手工敲入,手把手一步步带领学员从入门到精通. 亮点四、整个课程虽项目不大,但整个项目基本上涉及到JEasyui与后台交互的方方面面,而且讲师框架全部按大的项目架构去搭建的,学员拿到该项目后稍加改造就可以用到自己的项目,实用性超强.
很高兴回答您的问题!Java项目员工管理系统是一个非常常见的实践项目。它通常涉及到前后端分离的架构,使用JavaEE作为后端框架,Vue作为前端框架,SSM作为整个项目的技术栈,MySQL作为数据库,同时使用Maven进行项目构建和依赖管理,Axios用于前后端数据交互,HTML用于构建前端页面。 以下是一个简单的步骤指南,以帮助您开始这个项目: 1. 确定项目需求:明确系统所需的功能和特性,例如员工信息的增删改查、权限管理等。 2. 创建数据库:使用MySQL或其他数据库管理系统创建一个数据库,定义员工表和其他相关表。 3. 后端开发: - 使用JavaEE作为后端框架,搭建项目结构。 - 使用SSM框架(Spring、SpringMVC、MyBatis)进行后端开发。配置数据源、连接数据库,并编写DAO层接口和Mapper文件。 - 实现业务逻辑层和控制层,编写接口和请求处理方法。 4. 前端开发: - 使用Vue作为前端框架,搭建项目结构。 - 使用Axios进行前后端数据交互,发送HTTP请求。 - 使用HTML和CSS构建前端页面,实现员工信息的展示、增删改查等功能。 5. 前后端联调: - 后端提供接口,在前端使用Axios发送请求,获取后端数据。 - 前端通过Ajax获取数据,并进行展示和交互。 6. 项目打包部署: - 使用Maven进行项目构建和依赖管理。配置pom.xml文件,添加所需的依赖。 - 部署后端项目到服务器,配置数据库连接等相关配置。 - 将前端代码打包为静态文件,并部署到Web服务器。 这只是一个简单的指南,实际开发过程还需要考虑更多的细节和问题。希望以上信息对您有所帮助!如有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值