Spring代码生成器:JHipster生成的代码是难以维护还是无法立即投入生产 – N47

20-04-03 banq

JHipster是一个开源平台,用于生成,开发和部署Spring Boot + Angular / React / Vue Web应用程序。Github上有超过15000个星星,它是Spring Boot最受欢迎的代码生成框架。但是,是否太过于大肆宣传?还是生成的代码太难维护?还是无法立即投入生产了?

首先要注意的是,JHipster本身并不是一个单独的框架。它使用yeoman和.jdl文件以便在Spring Boot中为后端生成代码,并在Angular或React或Vue中生成前端代码。在最初生成项目之后,您可以选择使用生成的代码而无需再次运行JHipster命令,或者使用JHipster来逐步增长项目并开发新功能。

JDL到底是什么?

JDL是特定于JHipster的域语言,您可以在其中使用用户友好的语法在一个文件(或多个文件)中描述所有应用程序,部署,实体及其关系。

您可以使用我们的在线  JDL-Studio  或 支持使用JDL文件的  JHipster IDE插件/扩展之一。

用于Blog应用程序的简单JDL文件示例:

entity Blog {
  name String required minlength(3)
  handle String required minlength(2)
}
 
entity Post {
  title String required
  content TextBlob required
  date Instant required
}
 
entity Tag {
  name String required minlength(2)
}
 
relationship ManyToOne {
  Blog{user(login)} to User
  Post{blog(name)} to Blog
}
 
relationship ManyToMany {
  Post{tag(name)} to Tag{entry}
}
 
paginate Post, Tag with infinite-scroll

(banq注:这些是数据库表的定义,生成的代码是一种失血模型,DTO,失去业务价值。违背DDD)

使用哪些技术?

在后端,拥有以下技术:

  • Spring Boot作为主要的后端框架
  • Maven或Gradle进行配置
  • Spring Security作为安全框架
  • Spring MVC REST + Jackson进行REST通信
  • 用于对象关系映射的Spring Data JPA + Bean验证
  • 用于数据库更新的Liquibase
  • MySQL,PostgreSQL,Oracle,MsSQL或MariaDB作为SQL数据库
  • MongoDB,Counchbase或Cassandra作为NoSQL数据库
  • Thymleaf作为模板引擎
  • 可选的 Elasticsearch支持,如果您想在数据库之上具有搜索功能
  • 用于Web套接字通信的可选Spring WebSockets
  • 可选的Kafka支持作为发布-订阅消息系统

在前端方面,使用了以下技术:

  • Angular或React或Vue作为主要的前端框架
  • 使用Twitter Bootstrap进行响应式Web设计
  • 与现代浏览器兼容的HTML5 Boilerplate
  • 全面的国际化支持
  • 使用NPM安装新的JavaScript库
  • 使用Webpack构建,优化和实时重新加载
  • 用Jest和Protractor进行测试
  • Sass对CSS设计的可选支持

如何开始?

  1. 前提要求:Java,  Git 和  Node.js
  2. 安装JHipster npm install -g generator-jhipster
  3. 创建一个新目录并进入 mkdir myApp && cd myApp
  4. 运行JHipster并按照屏幕上的说明进行操作 jhipster
  5. 使用JDL Studio为实体建模   并下载结果  jhipster-jdl.jh 文件
  6. 生成您的实体 jhipster import-jdl jhipster-jdl.jh
  7. 运行./mvnw以启动生成的后端
  8. 运行npm start以启动具有实时重新加载支持的前端

生成的代码和应用程​​序看起来如何?

如果您只想查看示例生成的应用程序而无需启动整个框架,则可以查看此Github官方仓库以获取最新的示例代码:https : //github.com/jhipster/jhipster-sample-app

优缺点都有什么

要记住的重要一点是,JHipster并不是解决所有问题的“灵丹妙药”,也不是所有新项目的最佳解决方案。作为一名优秀的软件工程师,您将不得不权衡该平台的优缺点,并决定何时使用它以及何时使用另一种方法更好。将JHipster用于生产项目后,这些是我所经历过的一些利弊:

优点

  • 通过许多预先配置的技术轻松引导新项目
  • JHipster在后端和前端开发中几乎始终遵循最佳实践和最新趋势
  • 开箱即用的登录,注册,用户管理和监视
  • 用于生成项目的向导,项目中仅包含您选择的技术
  • 定义自己的JDL文件后,将为您的实体生成所有模型,存储库,服务和控制器类,以及集成测试。当您希望尽快进行功能开发时,这可以节省大量的项目乞讨时间

缺点

  • 如果您不熟悉所生成项目中使用的技术,那么它可能会令人不知所措,并且很容易迷失在许多不同技术的混合中
  • 在最初的项目之后使用JHipster并不是一个平稳的体验。类和Liquibase脚本正在被覆盖,更改初始JDL模型时必须非常小心。或者,您可以决定在最初生成项目后不使用JHipster继续操作
  • 从端点返回的REST响应并不总是与业务需求相对应,通常您必须手动修改初始的JHipster REST响应
  • 并非所有可用选项都处于同一级别,JHipster正在使用和配置的某些技术比其他技术更为精炼。如果您决定使用社区模块,尤其如此

什么样的项目比较合适?

综上所述,重要的是要了解,有些项目可以从JHipster中受益匪浅,而有些项目如果不使用此平台,则会更好。

根据我的经验,一个不错的候选人是一个未开发的项目,该项目有望快速交付许多功能。从第一天开始,JHipster将极大地提高工作效率,并减少您需要编写的样板代码。这样一来,您就可以真正快速地进行功能开发。这对于期限紧迫的新项目,概念证明,内部项目,黑客马拉松和初创公司非常有用。

另一方面,不太理想的情况是,如果您已经启动并运行了一个项目,那么在这种情况下,JHipster将无能为力。如果应用程序具有很多特定的业务逻辑并且不是简单的CRUD应用程序,例如,一个AI项目,一个聊天机器人或一个不适合或不支持这些新技术的遗留生态系统,则为另一种情况。

JHipster,值得一试吗?

只有一种确定JHipster是否值得用于下一个项目的可靠方法,那就是自己尝试一下并尝试使用JHipster提供的不同功能和配置。

充其量,您将为下一个项目找到一个新的框架,并在下次启动项目时省去了很多工作。最糟糕的是,您将了解后端和前端的最新趋势,并从庞大的社区中学习一些最佳实践。

 

                   

猜你喜欢