還在從零開(kāi)始搭建項(xiàng)目?推薦一款高顏值的前后端分離腳手架襟沮!

從零開(kāi)始搭建項(xiàng)目锥惋,沒(méi)有好用的腳手架怎么行!最近發(fā)現(xiàn)一款高顏值的前后端分離腳手架sa-plus臣嚣,自帶代碼生成器净刮,可一鍵生成前端剥哑、后端硅则、API文檔代碼,推薦給大家株婴!

sa-plus簡(jiǎn)介

一款基于SpringBoot的快速開(kāi)發(fā)框架怎虫,內(nèi)置代碼生成器。

項(xiàng)目特點(diǎn):

  • 集成常用開(kāi)發(fā)功能困介,包括文件上傳大审、角色授權(quán)、全局異常處理座哩、Redis控制臺(tái)徒扶、API日志統(tǒng)計(jì)等。
  • 內(nèi)置代碼生成器根穷,高自動(dòng)化代碼生成姜骡,可一鍵生成后端、前端和API文檔代碼屿良。
  • 通過(guò)給表添加注釋來(lái)生成代碼圈澈,數(shù)據(jù)庫(kù)表建好了,項(xiàng)目也就開(kāi)發(fā)一半了尘惧。

項(xiàng)目架構(gòu)

sa-plus前后端使用的技術(shù)棧還是非常主流的康栈,下面我們來(lái)看下。

使用技術(shù)棧

  • 后端技術(shù)棧:MySql 5.7喷橙、SpringBoot啥么、Mybatis-Plus、Druid贰逾、PageHelper悬荣、Redis、Sa-Token似踱、Lombok隅熙、Hutool稽煤、FastJson
  • 前端技術(shù)棧:Vue、Element-Ui囚戚、WangEditor酵熙、Jquery、Layer驰坊、Swiper匾二、Echarts

模塊介紹

  • sp-server:SpringBoot后端代碼。
  • sp-admin:Vue管理系統(tǒng)前端代碼拳芙。
  • sp-apidoc:Docsify API接口文檔代碼察藐。
  • sp-generate:代碼生成器,可生成后端舟扎、前端分飞、API文檔。
  • sp-devdoc:sa-plus本地文檔睹限。
  • doc:其它文件譬猫,存放SQL腳本。

快速開(kāi)始

sp-server羡疗、sp-admin染服、sp-apidoc為sa-plus的主要項(xiàng)目模塊,我們先把它們啟動(dòng)起來(lái)叨恨。

sp-server

  • 先在MySql中創(chuàng)建sp-dev數(shù)據(jù)庫(kù)柳刮,導(dǎo)入項(xiàng)目doc目錄下的sa-plus.sql腳本,導(dǎo)入成功后將生成如下表痒钝;
    image.png
  • sp-server模塊導(dǎo)入到IDEA中秉颗,導(dǎo)入成功后項(xiàng)目結(jié)構(gòu)如下;
    image.png
  • 修改項(xiàng)目的配置文件application-dev.yml午乓,將MySql和Redis配置修改為你自己的連接配置站宗;
spring: 
    # 數(shù)據(jù)源配置
    datasource: 
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://127.0.0.1:3306/sp-dev?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
        username: root
        password: root

    # redis配置 
    redis:
        # Redis數(shù)據(jù)庫(kù)索引(默認(rèn)為0)
        database: 1
        # Redis服務(wù)器地址
        host: 127.0.0.1
        # Redis服務(wù)器連接端口
        port: 6379
        # Redis服務(wù)器連接密碼(默認(rèn)為空)
        # password: 
        # 連接超時(shí)時(shí)間(毫秒)
        timeout: 5000ms
  • 運(yùn)行啟動(dòng)類SpServerApplicationmain方向,至此后端服務(wù)啟動(dòng)成功益愈。
2021-08-09 16:46:00.478   INFO  -->  Initializing ExecutorService 'applicationTaskExecutor'
____ ____    ___ ____ _  _ ____ _  _ 
[__  |__| __  |  |  | |_/  |___ |\ | 
___] |  |     |  |__| | \_ |___ | \| 
DevDoc:http://sa-token.dev33.cn (v1.24.0)
GitHub:https://github.com/dromara/sa-token
2021-08-09 16:46:00.744   INFO  -->  Initializing ExecutorService 'taskScheduler'
2021-08-09 16:46:00.778   INFO  -->  Starting ProtocolHandler ["http-nio-8099"]
2021-08-09 16:46:00.792   INFO  -->  Tomcat started on port(s): 8099 (http) with context path ''
2021-08-09 16:46:00.802   INFO  -->  Started SpServerApplication in 3.871 seconds (JVM running for 4.797)

------------- sa-plus (dev) 啟動(dòng)成功 --by 2021-08-09 16:46:00 -------------

sp-admin

  • sp-admin模塊導(dǎo)入到IDEA中梢灭,導(dǎo)入成功后項(xiàng)目結(jié)構(gòu)如下;

    image.png

  • 打開(kāi)index.html頁(yè)面蒸其,點(diǎn)擊右上角按鈕運(yùn)行到瀏覽器即可敏释;

    image.png

  • 使用默認(rèn)賬號(hào)密碼登錄后,即可訪問(wèn)sa-plus的首頁(yè)摸袁,界面還是挺炫酷的钥顽;

    image.png

  • 我們可以稍稍體驗(yàn)下sa-plus的基礎(chǔ)功能,比如Redis控制臺(tái)功能靠汁,可以查看Redis狀態(tài)和管理Redis中的數(shù)據(jù)蜂大;

    image.png

  • 還有API請(qǐng)求日志功能闽铐,可以查看API請(qǐng)求記錄和請(qǐng)求耗時(shí);

    image.png

  • 還有權(quán)限管理中的角色管理功能奶浦,可以創(chuàng)建角色并給角色分配權(quán)限兄墅;

    image.png

  • 還有權(quán)限管理中的菜單管理,其實(shí)我們可以發(fā)現(xiàn)sa-plus中的菜單和權(quán)限是綁定在一起的澳叉,而菜單是從前端的路由中獲取的隙咸,給角色分配了菜單即分配了菜單下的權(quán)限,這樣做的話想做到接口級(jí)權(quán)限就比較麻煩了成洗;

    image.png

  • 還有權(quán)限管理中的用戶管理五督,可以管理用戶信息。

    image.png

    sp-apidoc

  • sp-apidoc模塊導(dǎo)入到IDEA中瓶殃,導(dǎo)入成功后項(xiàng)目結(jié)構(gòu)如下充包;

    image.png

  • 打開(kāi)index.html頁(yè)面,點(diǎn)擊右上角按鈕運(yùn)行到瀏覽器即可碌燕,此時(shí)我們可以發(fā)現(xiàn)API文檔中還沒(méi)有任何內(nèi)容误证。

    image.png

代碼生成器

使用代碼生成器继薛,可以根據(jù)數(shù)據(jù)庫(kù)表直接生成前端修壕、后端及API文檔代碼,讓我們來(lái)體驗(yàn)下它有何神奇之處遏考。

  • sp-generate模塊導(dǎo)入到IDEA中慈鸠,導(dǎo)入成功后項(xiàng)目結(jié)構(gòu)如下;
    image.png
  • 然后往MySql中導(dǎo)入測(cè)試數(shù)據(jù)灌具,導(dǎo)入項(xiàng)目doc目錄下的test-data.sql腳本青团,導(dǎo)入成功后新增如下表;
    image.png
  • 接下來(lái)修改SpGenerateApplication中的MySql連接配置和代碼生成目錄配置咖楣;
@SqlFlySetup
@SpringBootApplication
public class SpGenerateApplication {
 
 // 直接運(yùn)行代碼生成器
 public static void main(String[] args) {

        // 啟動(dòng)springboot   
        SpringApplication.run(SpGenerateApplication.class, args);


        // ===================================  設(shè)置連接信息  =================================== 
        FlyConfig config = new FlyConfig();
        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);        // 是否打印sql  
        FlyObjects.setConfig(config);    // 注入到框架中


        // ===================================  一些全局設(shè)置  =================================== 
        GenCfgManager.cfg
                .setProjectPath("D:/developer/demo/sa-plus/")    // 總項(xiàng)目地址 (生成代碼的路徑) 
                .setServerProjectName("sp-server")                // 服務(wù)端 - 項(xiàng)目名稱 
//         .setServerProjectName("sp-com/sp-core")   // 服務(wù)端 - 項(xiàng)目名稱 (sp-com多模塊版填此格式)
                .setCodePath("src/main/java/")                    // 服務(wù)端代碼 - 存放路徑 
                .setPackagePath("com.pj.project")                // 服務(wù)端代碼 - 總包名 
                .setPackage_utils("com.pj.utils.sg.*")            // 服務(wù)端代碼 - util類包地址 
                .setAuthor("macrozheng");                        // 服務(wù)端代碼 - 代碼作者
    }
}
  • 然后運(yùn)行啟動(dòng)類SpGenerateApplicationmain方法生成代碼督笆,運(yùn)行成功后,sp-serverproject包下會(huì)生成后端代碼诱贿;
    image.png
  • sp-adminsa-html目錄下會(huì)生成前端代碼娃肿,還會(huì)在menu-list.js中追加菜單信息;
    image.png
  • sp-apidocproject目錄也下會(huì)生成API文檔代碼珠十;
    image.png
  • 重新運(yùn)行前后端代碼后料扰,我們暫時(shí)還無(wú)法看到新增的菜單,還需要給角色分配權(quán)限才可以查看焙蹭;
    image.png
  • 之后我們可以看到晒杈,對(duì)于商品表來(lái)說(shuō),列表頁(yè)面和添加頁(yè)面已經(jīng)給我們生成好了孔厉;
    image.png
  • 其實(shí)sa-plus是通過(guò)解析數(shù)據(jù)庫(kù)表中的注釋來(lái)生成代碼的拯钻,我們可以看下商品表的SQL語(yǔ)句帖努,其中有很多包含[]的注釋,sa-plus就是根據(jù)這些規(guī)則來(lái)生成代碼的粪般;
CREATE TABLE `ser_goods` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '記錄id [num no-add]',
  `name` varchar(200) DEFAULT NULL COMMENT '商品名稱 [text j=like]',
  `avatar` varchar(512) DEFAULT NULL COMMENT '商品頭像 [img]',
  `image_list` varchar(2048) DEFAULT NULL COMMENT '輪播圖片 [img-list]',
  `content` text COMMENT '圖文介紹 [f]',
  `money` int(11) DEFAULT '0' COMMENT '商品價(jià)格 [num]',
  `type_id` bigint(20) DEFAULT NULL COMMENT '所屬分類 [num]',
  `stock_count` int(11) DEFAULT '0' COMMENT '剩余庫(kù)存 [num]',
  `status` int(11) DEFAULT '1' COMMENT '商品狀態(tài) (1=上架,2=下架) [j]',
  `create_time` datetime DEFAULT NULL COMMENT '創(chuàng)建日期 [date-create]',
  `update_time` datetime DEFAULT NULL COMMENT '更新日期 [date-update]',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1005 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='商品表\n[table icon=el-icon-a
  • 這里的規(guī)則比較多然磷,大家可以自行對(duì)照下表查看;
    image.png
  • 最后我們?cè)賮?lái)看下已經(jīng)生成好的API文檔刊驴,商品表的CRUD接口文檔都有了姿搜,非常詳細(xì);
    image.png
  • 而且API文檔中還提供了接口測(cè)試功能捆憎,是不是很貼心舅柜!
    image.png

總結(jié)

通過(guò)上面的一波實(shí)踐,我們可以發(fā)現(xiàn)sa-plus確實(shí)是個(gè)有意思的框架躲惰。不僅提供了項(xiàng)目的基礎(chǔ)功能致份,還提供了代碼生成器,可以一鍵生成前后端及API文檔代碼础拨,大大提高了開(kāi)發(fā)效率氮块。但是沒(méi)有一種代碼生成器是萬(wàn)能的,復(fù)雜的代碼還是需要手寫(xiě)诡宗。sa-plus的權(quán)限功能把菜單和權(quán)限綁定在了一起滔蝉,使用起來(lái)不太靈活,還是可以改進(jìn)下的塔沃。

參考資料
官方文檔:http://sa-plus.dev33.cn/

項(xiàng)目地址
https://gitee.com/click33/sa-plus

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝠引,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蛀柴,更是在濱河造成了極大的恐慌螃概,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸽疾,死亡現(xiàn)場(chǎng)離奇詭異吊洼,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)制肮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)冒窍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人弄企,你說(shuō)我怎么就攤上這事超燃。” “怎么了拘领?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵意乓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)届良,這世上最難降的妖魔是什么笆凌? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮士葫,結(jié)果婚禮上乞而,老公的妹妹穿的比我還像新娘。我一直安慰自己慢显,他們只是感情好爪模,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著荚藻,像睡著了一般屋灌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上应狱,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天共郭,我揣著相機(jī)與錄音,去河邊找鬼疾呻。 笑死除嘹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的岸蜗。 我是一名探鬼主播尉咕,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼散吵!你這毒婦竟也來(lái)了龙考?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤矾睦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后炎功,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體枚冗,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蛇损,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赁温。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡淤齐,死狀恐怖股囊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情更啄,我是刑警寧澤稚疹,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站祭务,受9級(jí)特大地震影響内狗,放射性物質(zhì)發(fā)生泄漏怪嫌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一柳沙、第九天 我趴在偏房一處隱蔽的房頂上張望岩灭。 院中可真熱鬧,春花似錦赂鲤、人聲如沸噪径。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)熄云。三九已至,卻和暖如春妙真,著一層夾襖步出監(jiān)牢的瞬間缴允,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工珍德, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留练般,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓锈候,卻偏偏與公主長(zhǎng)得像薄料,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泵琳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容