当前位置: 首页 > 后端技术 > Java

还在从头开始构建项目?推荐一款好看的前端分离脚手架!

时间:2023-04-02 01:50:44 Java

从头开始搭建项目,没有一个好用的脚手架怎么行!最近发现sa-plus,一个好看的前后端分离脚手架,自带代码生成器,可以一键生成前后端和API文档代码。我把它推荐给了每一个人!SpringBoot实战电商项目商城(50k+star)地址:https://github.com/macrozheng/mallsa-plus简介一个基于SpringBoot的快速开发框架,内置代码生成器。项目特点:集成常用开发功能,包括文件上传、角色授权、全局异常处理、Redis控制台、API日志统计等。内置代码生成器,高度自动化代码生成,可生成后端、前端和API一键生成文档代码。给表加注释生成代码,建好数据库表,项目开发到一半。项目架构sa-plus的前后端使用的技术栈还是很主流的,下面一起来看看吧。使用技术栈后端技术栈:MySql5.7、SpringBoot、Mybatis-Plus、Druid、PageHelper、Redis、Sa-Token、Lombok、Hutool、FastJson前端技术栈:Vue、Element-Ui、WangEditor、Jquery、Layer、Swiper、Echarts模块引入sp-server:SpringBoot后端代码。sp-admin:Vue管理系统前端代码。sp-apidoc:DocsifyAPI接口文档代码。sp-generate:一个代码生成器,可以生成后端、前端和API文档。sp-devdoc:sa-plus本地文档。doc:其他文件,存放SQL脚本。快速启动sp-server、sp-admin、sp-apidoc是sa-plus的主要项目模块,我们先来启动一下。sp-server首先在MySql中创建sp-dev数据库,在项目的doc目录下导入sa-plus.sql脚本。导入成功后会生成下表;将sp-server模块导入IDEA。导入成功后,项目结构如下;修改项目配置文件application-dev.yml,将MySql和Redis配置修改为自己的连接配置;spring:#数据源配置datasource:type:com.alibaba.druid.pool.DruidDataSourceurl:jdbc:mysql://127.0.0.1:3306/sp-dev?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTCusername:rootpassword:root#redis配置redis:#Redis数据库索引(默认为0)database:1#Redis服务器地址host:127.0.0.1#Redis服务器连接端口port:6379#Redis服务器连接密码(默认为空)#password:#Connectiontimeout(milliseconds)timeout:5000ms运行启动类SpServerApplication的主方向,然后后台服务启动成功。2021-08-0916:46:00.478信息-->正在初始化ExecutorService'applicationTaskExecutor'_______________________[__|__|__||||_/|___|\|___]||||__||_|___||DevDoc:http://sa-token.dev33.cn(v1.24.0)GitHub:https://github.com/dromara/sa-token2021-08-0916:46:00.744INFO-->InitializingExecutorService'taskScheduler'2021-08-0916:46:00.778信息-->启动ProtocolHandler["http-nio-8099"]2021-08-0916:46:00.792信息-->Tomcat在端口上启动:8099(http)withcontextpath''2021-08-0916:46:00.802INFO-->在3.871秒内启动SpServerApplication(JVM运行4.797)------------sa-plus(dev)启动成功--by2021-08-0916:46:00--------------sp-admin将sp-admin模块导入IDEA导入成功后项目结构为如下;打开index.html页面,点击右上角按钮运行到浏览器;使用默认账号密码登录后,可以访问sa-plus的首页,界面很酷;我们可以稍微体验一下sa-plus的基本功能,比如Redis控制台功能,可以查看Redis状态,管理Redis中的数据;还有API请求日志功能,可以查看API请求记录和请求耗时;还有权限管理角色管理功能,可以创建角色,给角色分配权限;还有权限管理其实我们可以发现sa-plus中的菜单和权限是绑定在一起的,菜单是从前端路由中获取的。将菜单分配给角色意味着分配菜单下的权限。如果要做,实现接口级权限比较麻烦;权限管理中还有用户管理,可以对用户信息进行管理。sp-apidoc将sp-apidoc模块导入IDEA。导入成功后,项目结构如下;打开index.html页面,点击右上角的按钮运行到浏览器,此时我们可以发现API文档中没有任何内容。代码生成器使用代码生成器,可以直接根据数据库表生成前后端代码和API文档代码。让我们来体验一下它的神奇之处。将sp-generate模块导入IDEA。导入成功后,项目结构如下;然后将测试数据导入MySql,在项目的doc目录下导入test-data.sql脚本,导入成功后添加如下表格;然后修改SpGenerateApplicationMySql连接配置和代码生成目录配置;@SqlFlySetup@SpringBootApplicationpublicclassSpGenerateApplication{//直接运行代码生成器publicstaticvoidmain(String[]args){//启动springbootSpringApplication.run(SpGenerateApplication.class,args);//=======================================设置连接信息======================================FlyConfigconfig=newFlyConfig();config.setDriverClassName("com.mysql.jdbc.Driver");配置.setUrl("jdbc:mysql://127.0.0.1:3306/sp-dev?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC");config.setUsername("root");config.setPassword("root");配置.setPrintSql(true);//是否打印sqlFlyObjects.setConfig(config);//注入框架//======================================一些全局设置======================================GenCfgManager.cfg.setProjectPath("D:/developer/demo/sa-plus/")//项目总地址(生成代码的路径).setServerProjectName("sp-server")//服务器项目名称//.setServerProjectName("sp-com/sp-core")//服务器-项目名(sp-com多模块版本填写此格式).setCodePath("src/main/java/")//服务器代码-存储path.setPackagePath("com.pj.project")//服务器代码-总包名.setPackage_utils("com.pj.utils.sg.*")//服务器代码-util类包地址.setAuthor("macrozheng");//服务器代码-代码作者}}然后运行启动类SpGenerateApplication的main方法生成代码。运行成功后会在sp-server的工程包下生成后台代码;在sp-admin的sa-html目录下会生成前端代码,将菜单信息添加到menu-list.js中;API文档代码也会在sp-apidoc的工程目录下生成;重新运行前后端代码后,我们暂时看不到新增的菜单。您还需要为该角色分配权限,然后才能查看它;然后我们可以看到对于产品表,已经为我们生成了列表页和添加页;其实sa-plus是通过解析数据库表中的注释来生成代码的,我们可以看product表的SQL语句,里面有很多包含[]的注释,sa-plus是根据这些规则生成代码的;创建表`ser_goods`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'recordid[numno-add]',`name`varchar(200)DEFAULTNULLCOMMENT'productname[textj=like]',`avatar`varchar(512)DEFAULTNULLCOMMENT'产品头像[img]',`image_list`varchar(2048)DEFAULTNULLCOMMENT'carouselimages[img-list]',`content`textCOMMENT'图文介绍[f]',`money`int(11)DEFAULT'0'COMMENT'商品价格[num]',`type_id`bigint(20)DEFAULTNULLCOMMENT'category[num]',`stock_count`int(11)DEFAULT'0'COMMENT'remainingstock[num]',`status`int(11)DEFAULT'1'COMMENT'产品状态(1=up,2=off)[j]',`create_time`datetimeDEFAULTNULLCOMMENT'创建日期[date-create]',`update_time`datetimeDEFAULTNULLCOMMENT'更新日期[date-update]',PRIMARYKEY(`id`)USINGBTREE)ENGINE=InnoDBAUTO_INCREMENT=1005DEFAULTCHARSET=utf8ROW_FORMAT=COMPACTCOMMENT='商品表\n[tableicon=el-icon-apple]\n[fk-sjs=(type_id=sys_type.id),show=name.类别,掉落]\n';这里的规则比较多,大家可以根据下表自行查看;最后我们来看看生成的API文档。product表有CRUD接口文档,很详细;而且API文档还提供了接口测试功能,是不是很贴心!总结通过以上一波实践,我们可以发现sa-plus确实是一个有趣的框架,不仅提供了项目的基本功能,还提供了代码生成器,可以一键生成前端和API文档代码,大大提高了开发效率。但是没有一个代码生成器是万能的,复杂的代码还是需要手写。sa-plus的权限功能将菜单和权限绑定在一起,使用起来不是很灵活,还有待改进。参考官方文档:http://sa-plus.dev33.cn/项目地址https://gitee.com/click33/sa-...本文GitHubhttps://github.com/macrozheng/mall-learning有已收录,欢迎Star!