问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

还在从零开始搭建项目?推荐一款高颜值前后端分离脚手架sa-plus!

发布网友 发布时间:2024-09-30 07:48

我来回答

1个回答

热心网友 时间:2024-10-13 15:53

从零开始搭建项目,没有好用的脚手架怎么行!最近发现一款高颜值的前后端分离脚手架sa-plus,自带代码生成器,可一键生成前端、后端、API文档代码,推荐给大家!

SpringBoot实战电商项目mall(50k+star)地址:github.com/macrozheng/mall

sa-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:#连接超时时间(毫秒)timeout:5000ms

运行启动类SpServerApplication的main方向,至此后端服务启动成功。

2021-08-0916:46:00.478INFO-->InitializingExecutorService'applicationTaskExecutor'_______________________[__|__|__||||_/|___|\|___]||||__||_|___||DevDoc:http://sa-token.dev33.cn(v1.24.0)GitHub:https://github.com/dromara/sa-token2021-08-0916:46:00.744INFO-->InitializingExecutorService'taskScheler'2021-08-0916:46:00.778INFO-->StartingProtocolHandler["http-nio-8099"]2021-08-0916:46:00.792INFO-->Tomcatstartedonport(s):8099(http)withcontextpath''2021-08-0916:46:00.802INFO-->StartedSpServerApplicationin3.871seconds(JVMrunningfor4.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脚本,导入成功后新增如下表;

接下来修改SpGenerateApplication中的MySql连接配置和代码生成目录配置;

@SqlFlySetup@SpringBootApplicationpublicclassSpGenerateApplication{//直接运行代码生成器publicstaticvoidmain(String[]args){//启动springbootSpringApplication.run(SpGenerateApplication.class,args);//===================================设置连接信息===================================FlyConfigconfig=newFlyConfig();config.setDriverClassName("com.mysql.jdbc.Driver");config.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");config.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/")//服务端代码-存放路径.setPackagePath("com.pj.project")//服务端代码-总包名.setPackage_utils("com.pj.utils.sg.*")//服务端代码-util类包地址.setAuthor("macrozheng");//服务端代码-代码作者}}

然后运行启动类SpGenerateApplication的main方法生成代码,运行成功后,sp-server的project包下会生成后端代码;

sp-admin的sa-html目录下会生成前端代码,还会在menu-list.js中追加菜单信息;

sp-apidoc的project目录也下会生成API文档代码;

重新运行前后端代码后,我们暂时还无法看到新增的菜单,还需要给角色分配权限才可以查看;

之后我们可以看到,对于商品表来说,列表页面和添加页面已经给我们生成好了;

其实sa-plus是通过解析数据库表中的注释来生成代码的,我们可以看下商品表的SQL语句,其中有很多包含[]的注释,sa-plus就是根据这些规则来生成代码的;

CREATETABLE`ser_goods`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'记录id[numno-add]',`name`varchar(200)DEFAULTNULLCOMMENT'商品名称[textj=like]',`avatar`varchar(512)DEFAULTNULLCOMMENT'商品头像[img]',`image_list`varchar(2048)DEFAULTNULLCOMMENT'轮播图片[img-list]',`content`textCOMMENT'图文介绍[f]',`money`int(11)DEFAULT'0'COMMENT'商品价格[num]',`type_id`bigint(20)DEFAULTNULLCOMMENT'所属分类[num]',`stock_count`int(11)DEFAULT'0'COMMENT'剩余库存[num]',`status`int(11)DEFAULT'1'COMMENT'商品状态(1=上架,2=下架)[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.所属分类,drop]\n';

这里的规则比较多,大家可以自行对照下表查看;

最后我们再来看下已经生成好的API文档,商品表的CRUD接口文档都有了,非常详细;

而且API文档中还提供了接口测试功能,是不是很贴心!

总结

通过上面的一波实践,我们可以发现sa-plus确实是个有意思的框架。不仅提供了项目的基础功能,还提供了代码生成器,可以一键生成前后端及API文档代码,大大提高了开发效率。但是没有一种代码生成器是万能的,复杂的代码还是需要手写。sa-plus的权限功能把菜单和权限绑定在了一起,使用起来不太灵活,还是可以改进下的。

参考资料

官方文档:sa-plus.dev33.cn/

项目地址

https://gitee.com/click33/sa-plus

本文GitHubhttps://github.com/macrozheng/mall-learning已经收录,欢迎大家Star!

作者:MacroZheng

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...+sinB+sinC=0,cosA+cosB+cosC=0, 求证:cos(A+B)=-1/2 ...abc中,sinA(sinB+cosB)-sinC=0,sinB+cosC=0,求A,B的值 三角函数 已知sinA+sinB+sinC=0 cosA+cosB+cosC=0 求证:sin2A+sin2B... 已知sinA+sinB=sinC,cosA+cosB=cosC,求cos(A-B)的值 锐角三角形ABC中,比较sinAsinBsinC与cosAcosBcosC的大小 tanA tanB tan C sinA sinB sinC cosA cosB cosC 赵志杭“陶太太”捧红 是谁在六盘水火车站唱酒杯杯高来酒杯杯低里? 火车上酒杯可以携带吗 火车上酒杯能不能带 火车上让带小玻璃酒杯吗有几十个 是不是S6只要ROOT或者刷过第三方ROM都无法正常使用指纹识 什么品牌的数码相机最好?求大神帮助 哪个品牌的数码相机最好使? 删除的微信红包怎样能查出来呢! 苹果手机如何让相册里的照片横竖自由转换 苹果手机照片怎么横竖转换呢 梁朝伟《我是路人甲》影评全文 《听见流星的声音》赏析 三间房子两道门,又住君来又住臣,又住和尚和道士,还住叔嫂两个人打什么... 新手机是不是要用完电再充电? 小熊酸奶机酿米酒需要多久 小熊酸奶机能酿多长时间的米酒? 我是低保户收费时按正常收费了,政府能退给我吗? 崩坏星穹铁道景元怎么叠满10层-崩坏星穹铁道景元叠满10层攻略 崩坏星穹铁道各个击破怎么解锁-星穹铁道各个击破成就攻略 崩坏星穹铁道棋鬼解密第八关怎么过关-崩坏星穹铁道棋鬼解密第八关通关... 崩坏星穹铁道药王垂迹10层满星怎么打-崩坏星穹铁道药王垂迹10层满星打... 铜仁锦江御都有多少户? 铜仁市目前的房价多少钱一平米 黄景仁唯美古诗(十首清代黄景仁诗词) 除夕经典诗词有哪些(12首除夕诗词唯美) 除夕经典诗词有哪些(十五首优美的除夕诗词) “VNP”作为“5N Plus Incorporated”缩写的含义是什么? 三星s6102ROOT后哪些能删 三星S6指纹解锁按了几次无法识别,总是提示输入备用密码,可是备用密码... 三星s6102 root后什么可以删 1万以内的摩托车推荐(1万多皮实耐操的摩托车有哪些) ...把word表格转化为excel格式(wpsword表格怎么转化为excel表格) 北京展厅设计|原筑展览-博物馆的数字化运用设计与未来发展趋势 穿丝吊装带穿丝吊装带的注意事项 柔性吊带如何使用柔性吊带 柔性吊装带打包步骤 两头扣柔性吊装带两头扣柔性吊装带的概述 环状柔性吊装带优点 柔性吊装带技术数据 ...北京奥运会开幕式节目在美国电视观众中深受欢迎,收视率达到21_百度... 为什么接连做了三天关于死人的梦,是在预示什么吗 老是做同一个梦,还跟死人有关系,是什么意思? 求问!iphone4s里没有呼叫转移这个选项,怎么呼转啊? 4s如何设置呼叫转移 最近这几天老是梦到死人的。都连续5天了。记得最清楚的是。我家楼下每 ... 中联·丽致酒店(龙湾金海湖店)位置在哪里