我想把Jhipster介绍给你
前⾔
刚参加⼯作的时候,每写⼀⾏代码都感觉⼗分开⼼、充满了新鲜与激情。随着参与项⽬的增多,代码写的越来越多,越写越熟练。于此同时解决问题的速度也越来越快,暴露的问题也越来越少。⽆论什么需求,来了就⼲,看着看板⾥的任务⼀条条被消除,看着系统功能⼀个个上线,感觉⾃⼰写的代码指哪打哪。
这时候写代码感觉真爽啊!真充实啊!然⽽,这种感觉只持续了⼀两年的时间。渐渐地,和很多⼈⼀样,我也厌倦了,毕竟业务代码就那些东西,写好dao,写好service,写好controller,写好单元测试,部署,配合测试联调,上线,完事。除了设计之外,剩下的⼯作搞来搞去说⽩了就是增删改查。
如果只做设计,不写代码就好了。是的,没错,很多⼈都这么想,实际上后来我们的很多dao⽅⾯的内容都是⾃动⽣成的。以mybatis为例,我们会⽤⼯具去⽣成entity,mapper类和mapper⽂件。直接写service和controller即可。我以为这就很好了,然⽽当我发现Jhipster的时候,不禁感叹原来世界上还有这么好的东西。
先留⼀个问题
假设你是⼀个⼯作了3年以上的Java程序员,3年了,熟⼿了吧!让你从0开始编写⼀个单页⾯应⽤,后端
使⽤springboot,前端使⽤angular 或者react或者vue。使⽤spring security 做权限管理,使⽤spring data jpa做CRUD,使⽤JWT作为前后端交互的认证⽅案。
设计这个应⽤,你⼤概需要5张表,你的任务是设计并搭建好这个应⽤,并开发相关功能(前后端都得开发)。使得,项⽬启动之后,有登录界⾯,我可以登录不同⾓⾊的账户。登录之后我可以在前端界⾯中针对这⼏张表进⾏的增删改查和分页列表。还能查看swagger⽂档。
如果只有2个⼯作⽇,这个任务对你来说有没有难度?
Jhipster 介绍
由于前⾔中已经做了铺垫了,你⼤概能猜到Jhipster的⼤概是和⽣成代码有关。然⽽,Jhipster不⽌如此。Jhipster这个名词可以拆开成:Java + hipster ,hipster是潮⼈的意思,加起来就是Java潮⼈?没错,她所涉及的技术栈确实是紧跟时代潮流的。那么她的具体定义是啥呢?⽤官⽹的话说:
Jhipster是⼀个⽤于快速⽣成、开发、部署现代web应⽤和微服务架构的开发平台。
看了这个定义,貌似没啥?甚⾄不是很明⽩。然⽽软件开发是⼀个实操⽐较强的⼯种,上⼿操作⼀把就知道了。还记得上⾯我们留的⽬标问题吗?实现这个问题你需要多久?我猜2天你根本不够或者是很吃⼒、⾮常吃⼒才能完成。然⽽,提前透露,使⽤Jhipster的话,你只需要花半天的时间把数据表设计好。
剩下的10分钟就好。
安装Jhipster
安装Jhipster没啥技术含量,不细说。第⼀步先安装nodejs,然后执⾏如下命令安装jhipster:
npm install -g generator-Jhipster
⽣成⼀个前后端分离的项⽬
安装好之后,我们可以开始创建项⽬了。先创建Hige⽬录,例如jhipster_demo,然后在命令⾏中进⼊这个⽬录,输⼊命令jhipster回车之后回复⼀系列问题之后,就可⽣产项⽬了,⼀步步填写,过程中的问题如下:
1. What is the base name of your application? (您的应⽤程序的基础名是什么?)
这是您应⽤程序的名称。
2. What is your default Java package name? (您的默认Java软件包名称是什么?)
您的Java应⽤程序将以此为包的根名称。
3. Do you want to use the JHipster Registry to configure, monitor and scale your application?
JHipster Registry是⼀个开源⼯具,⽤于管理您在运⾏中的应⽤程序。可不选。
4.Which type of authentication would you like to use?
选择认证⽅式,如JWT,OAuth 2.0,HTTP会话等。
5.Which type of database would you like to use?
选择数据库类型,提供了sql的,nosql的,供你选择。
6.Which production database would you like to use?
您要使⽤哪个⽣产数据库
7. Which development database would you like to use?
您要使⽤哪个开发数据库?⼀般选h2-disk
8.Do you want to use the Spring cache abstraction?
您是否要使⽤Spring抽象缓存?
9. Would you like to use Maven or Gradle?
您要使⽤Maven还是Gradle?
10. Which other technologies would you like to use?
您还想使⽤哪些其他技术?根据需要选择即可
11. Which Framework would you like to use for the client?
您想为前端选择使⽤哪个框架?给出的选项是angular,react,vue
12.Would you like to use a Bootswatch theme?
选择你想要使⽤的前端题。
13.Would you like to use the Sass stylesheet preprocessor for your CSS?
您想为CSS使⽤Sass样式表预处理器吗?
14.Which testing frameworks would you like to use?
您想使⽤哪些测试框架?可选的是Gatling,Cucumber等。
15.Would you like to install other generators from the JHipster Marketplace?
您是否要从JHipster市场安装其他⽣成器?选否就⾏。
完成上⾯的问答填写⼤概需要3分钟,然后就开始⽣成项⽬了。你将得到⼀个,使⽤springboot+angular/react/vue的现代web应⽤。下⾯可以设计数据模型了。
设计实体模型
很多⼈会使⽤⼀些⼯具来建模,建模好了之后,可以直接导出sql语句建表。在jhipster中也有类似⼯具。叫JHipster UML,我们⽤JHipster UML可以定义模型实体的名称,字段,字段类型,以及⼀对多、多对多之类的关系。以官⽹给出的简单的博客系统UML为例,是这样的:entity Blog {
name String required minlength(3),
handle String required minlength(2)
springboot其实就是spring
}
entity Entry {
title String required,
content TextBlob required,
date Instant required
}
entity Tag {
name String required minlength(2)
}
relationship ManyToOne {
Blog{user(login)} to User,
Entry{blog(name)} to Blog
}
relationship ManyToMany {
Entry{tag(name)} to Tag{entry}
}
paginate Entry, Tag with infinite-scroll
即使是第⼀次看这个,也能看出,分别有Blog,Entry,Tag三个实体,以及他们的对应关系。
⽣成代码
上⾯的建模语⾔中的内容,我们保存为blog.jh⽂件。然后cd 到我们的项⽬⽬录cd jhipster_demo。执⾏jhipster import-jdl blog.jh。稍等⽚刻之后,你会得到⼀个完整的应⽤,dao,servie,controller,前端页⾯功能等,可以直接运⾏查看效果。这个过程只有10分钟,就实现了我们开头所举例⼦中的问题。
我们可以运⾏项⽬,看看效果。有两种⽅式,⽅法⼀:
1.执⾏mvn clean package -st.skip=true
2.cd target
3.java -jar jar名称
⽅法⼆:
1. ⽤IDE打开项⽬,到springboot的⼊⼝程序,在我们这⾥就是BlogApplication.java,运⾏这个类启动项⽬。
2. 在项⽬⽬录运⾏npm install ,然后运⾏npm start即可。
总结
当我们写了很多代码之后,还去写很多的胶⽔代码其实就没多⼤意义了。我们完全可以借助⼀些⼯具,帮我们⽣产代码。解放我们的双⼿,释放我们的时间,或者只是单纯的投个懒,有何不可呢?当我们解放了更多的时间之后,可以将更多的时间关注在设计上关注在其他⽅⾯上。实际上,jhipster写的代码还是可以的,简单的crud应⽤完全没问题,他⽣成的和亲⾃去写是⼀样的。
jhipster组合了⼀套成熟的技术⽅案,⽤来搭建项⽬也是⾮常好的,在创建新项⽬的时候,⾃⼰东拼西凑,这个配那个,弄了半天不见得能跑起来。jhipster直接给你⽣产⼀个能⽤能跑的。岂不美哉!
由于懒,我没贴图⽚,没贴代码,感兴趣的可以⾃⼰去操作⼀把看看。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。