当前位置: 首页 > 科技观察

JHipster:Java和JavaScript的全栈框架

时间:2023-03-14 08:55:06 科技观察

JHipster是一个成熟的Java和JavaScript混合应用生成框架,支持您喜欢的开发工具,并提供开箱即用的监控和其他管理功能。JHipster是一个长期存在且雄心勃勃的混合Java和JavaScript项目,致力于通过反应式前端简化全栈Java应用程序的开发。JHipster开发团队不断发布新版本以跟上IT行业的变化。通过构建一个简单的应用程序,看看这个框架可以做什么。什么是JHipster?JHipster在前端支持React、Vue和Angular。它通过技术蓝图上的插件支持其他框架,包括Svelte。在后端,SpringBoot扮演着重要的角色。在这方面,JHipster类似于Hilla框架,但有一个更远大的目标,即支持多种前端技术栈。从本质上讲,JHipster是一个高级构建工具,它统一了Java和JavaScript构建工具链并对各种管理功能进行分层。除了支持全栈应用,JHipster还支持构建微服务组件,为基于JPA的关系型数据存储和MongoDB、Cassandra等NoSQL数据存储提供脚手架。它还具有日志记录和分析功能。JHipster的工具集包括带有可视化数据建模器和基于Web的构造器(想想Spring的初始化器)的命令行和领域特定语言(DSL)。我们通过命令行开始使用JHipster。请注意,您需要安装最新版本的Java、Node.js和Git。JHipster示例应用根据JHipster快速入门指南,您需要安装generator-jhipsterNPM包并创建一个新目录来运行生成器。您将看到如图1所示的交互式对话框操作屏幕。图1Generator-JHipser构建您可以选择接受大部分默认设置。但在这个例子中,我们将使用MongoDB作为数据库,使用React作为前端框架(你可以选择任何反映你心情的Bootswatch主题)。一旦设置了这些选项,JHipster将完成构建,新的应用程序代码将出现在刚刚创建的目录中。构建并运行应用程序JHipster已经分别生成了Java和JavaScript应用程序。后端使用Maven构建,前端使用webpack构建。程序的两个部分可以同时运行以启动整个应用程序。(记住,你还需要同时在后台运行MongoDB)在shell中,输入:./mvn-P-webapp。此命令将构建并运行Java后端。我们使用-P-webapp来避免让Maven运行webpack部分。在另一个shell中,键入:npmstart。该命令会构建前端并以webpack的开发模式运行,通过API调用刚刚启动的Java服务。如果一切顺利,您应该会在localhost:8080上看到图2中所示的页面。图2JHipster的欢迎页面创建测试用户如果查看应用程序目录,您会发现JHipster生成器的输出远远超过您通常使用的生成工具,包括功能性的用户管理功能和基于JWT的身份验证功能。该应用程序还有一个默认帐户,用于创建测试用户。首先,请使用系统页面右上角的注册选项创建一个新用户。然后,创建一个测试用户(test@test.com),最后进入登录页面,选择默认的admin/admin用户。登录后,导航至用户管理页面(管理->用户管理)。请注意,新用户已在列表中。您可以通过将“Inactive”按钮切换为“Active”来激活测试用户,然后您可以以测试用户身份登录。请注意,此测试用户无权访问管理控制台。如前所述,JHipster有很多现成的功能。JHipster不仅支持React和MongoDB,还支持Angular、Vue以及大多数SQL和NoSQL数据存储。代码探索为了支持所有这些功能,JHipster包含了大量代码。幸运的是,这些大多是最新代码并遵循编程最佳实践。例如,React代码使用功能组件,利用Hooks,并针对集中式存储Redux运行。查看应用程序目录,您将看到以下结构:?/foundry-jhipster/o/webpack/:Webpackbundleo的Config/utils/src/main/?/java/:Javasources?/webapp/:Front-endsourceso/target/:两个构建的输出目录?/webapp/:前端构建输出?/java/:后端构建输出?/docker/:支持容器化的文件Java应用程序的入口点是src/main/java/com/mycompany/myapp/JhipsterApp.java。它本质上是一个SpringBootWeb应用程序,可以使用--spring.profiles.active=your-active-profile命令进行配置。身份验证和授权由SpringSecurity执行,开箱即用的Java应用程序本质上是一个用于用户CRUD(创建、读取、更新和删除)功能的API。SpringSecurity系统可以在/myapp/Security中配置。请记住,JHipster使用JSONWebTokens,因此支持它的类代码位于/security/jwt中。应用的领域模型定义在/domain目录下,对应前端/entities目录。可以通过查看package.json找到可用的前端脚本。这包括mongodbprune命令、测试和生产构建命令,以及现在使用的开发模式命令。客户端入口位于/src/main/webapp/index.html,但真正的操作位于/sec/main/webapp/app/app.tsx,定义了各个页面组件的应用路由(routerinrouter.在tsx中定义)。该应用程序的页面组件可以在main/webapp/app/modules中找到。例如,在/home/home.tsx中有主页的定义。在/main/webapp/app/shared目录下,你可以找到整个应用程序使用的代码。它们中的大多数用于集中存储,例如模型定义和reducer。目前,该应用程序仅与用户打交道,因此共享目录中只有这些组件和身份验证代码。在/entities文件夹中,有用于建模实体的代码。但是请注意,用户模型存储在共享目录中。但是还没有实体,所以接下来必须添加一些实体。定义模型:JDL和JDLStudioJDL是JHipster用来定义应用程序模型的领域特定语言。JDL不仅仅使用JDL元数据定义整个应用程序,但我们将专注于模型。首先,让我们使用JHipster的在线工具JDL-Studio为领域模型快速生成一些CRUD功能。您将看到一个实体关系生成器,如图3所示。图3JDL编译器JDL构建器支持定义实体及其属性,以及它们之间的关系。您可以通过更改左侧的实体定义并观察它们如何表示表达式来探索语法。点击页面右上角的【下载这个JDL源代码】按钮,下载定义好的实体。(注意相关配置工具栏有多个选项)获取文件后,通过命令行进入项目根目录,在命令行输入jhipsterjdlmyjdlfile.jdl,其中my-jdl-file.jdl是您刚刚导出的文件的名称。如果要覆盖这些文件,系统将提示您。选择是继续构建。完成后,您可以重新启动服务器并查看添加到应用程序中的内容。在浏览器的9000端口再次打开应用程序,并以admin/admin身份登录。现在,当您打开导航栏中的Entities菜单项时,您将看到刚刚导入的所有实体,以及用于管理它们的完整控制台。例如,您可以创建一个新的“Country”实体,然后创建一个新的“Location”实体,并在Location实体中引用新创建的Country实体。请注意,所有CRUD功能都在这里。监控和API管理管理员用户需要注意一些附加功能。Administration菜单包括一个Metrics选项,可以深入了解正在运行的JVM的特征,如图4所示。有关其监视功能的更多信息,请参阅JHipster文档。图4使用JVM指标监视JHipster应用程序JHipster还为其后端生成OpenAPI/Swagger样式的定义,以及一个用于交互的简单控制台。图5显示了API管理页面。图5通过API管理页面与后端交互JHipster提供了一个灵活的架构,允许不同的数据存储和前端框架。总而言之,这是一个令人印象深刻的框架。译者介绍涂成业,社区编辑,信息系统项目经理,信息系统主管,PMP,某省综合评标专家,15年开发经验。比较关注项目管理、前后端开发、微服务、架构设计、物联网、大数据等。目前就职于万一科技,从事比较大型的项目管理。原标题:IntrotoJHipster:Afull-stackframeworkforJavaandJavaScript,作者:MatthewTyson