<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 9513字,需瀏覽 20分鐘

           ·

          2021-09-27 09:35

          從零開(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-serversp-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)入成功后將生成如下表;
          • sp-server模塊導(dǎo)入到IDEA中,導(dǎo)入成功后項(xiàng)目結(jié)構(gòu)如下;
          • 修改項(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)類(lèi)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)如下;
          • 打開(kāi)index.html頁(yè)面,點(diǎn)擊右上角按鈕運(yùn)行到瀏覽器即可;
          • 使用默認(rèn)賬號(hào)密碼登錄后,即可訪問(wèn)sa-plus的首頁(yè),界面還是挺炫酷的;
          • 我們可以稍稍體驗(yàn)下sa-plus的基礎(chǔ)功能,比如Redis控制臺(tái)功能,可以查看Redis狀態(tài)和管理Redis中的數(shù)據(jù);
          • 還有API請(qǐng)求日志功能,可以查看API請(qǐng)求記錄和請(qǐng)求耗時(shí);
          • 還有權(quán)限管理中的角色管理功能,可以創(chuàng)建角色并給角色分配權(quán)限;
          • 還有權(quán)限管理中的菜單管理,其實(shí)我們可以發(fā)現(xiàn)sa-plus中的菜單和權(quán)限是綁定在一起的,而菜單是從前端的路由中獲取的,給角色分配了菜單即分配了菜單下的權(quán)限,這樣做的話想做到接口級(jí)權(quán)限就比較麻煩了;
          • 還有權(quán)限管理中的用戶管理,可以管理用戶信息。

          sp-apidoc

          • sp-apidoc模塊導(dǎo)入到IDEA中,導(dǎo)入成功后項(xiàng)目結(jié)構(gòu)如下;
          • 打開(kāi)index.html頁(yè)面,點(diǎn)擊右上角按鈕運(yùn)行到瀏覽器即可,此時(shí)我們可以發(fā)現(xiàn)API文檔中還沒(méi)有任何內(nèi)容。

          代碼生成器

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

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

                  // 啟動(dòng)springboot   
                  SpringApplication.run(SpGenerateApplication.classargs);


                  // ===================================  設(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)目名稱(chēng) 
          //         .setServerProjectName("sp-com/sp-core")   // 服務(wù)端 - 項(xiàng)目名稱(chēng) (sp-com多模塊版填此格式)
                          .setCodePath("src/main/java/")                    // 服務(wù)端代碼 - 存放路徑 
                          .setPackagePath("com.pj.project")                // 服務(wù)端代碼 - 總包名 
                          .setPackage_utils("com.pj.utils.sg.*")            // 服務(wù)端代碼 - util類(lèi)包地址 
                          .setAuthor("macrozheng");                        // 服務(wù)端代碼 - 代碼作者
              }
          }
          • 然后運(yùn)行啟動(dòng)類(lèi)SpGenerateApplicationmain方法生成代碼,運(yùn)行成功后,sp-serverproject包下會(huì)生成后端代碼;
          • sp-adminsa-html目錄下會(huì)生成前端代碼,還會(huì)在menu-list.js中追加菜單信息;
          • sp-apidocproject目錄也下會(huì)生成API文檔代碼;
          • 重新運(yùn)行前后端代碼后,我們暫時(shí)還無(wú)法看到新增的菜單,還需要給角色分配權(quán)限才可以查看;
          • 之后我們可以看到,對(duì)于商品表來(lái)說(shuō),列表頁(yè)面和添加頁(yè)面已經(jīng)給我們生成好了;
          • 其實(shí)sa-plus是通過(guò)解析數(shù)據(jù)庫(kù)表中的注釋來(lái)生成代碼的,我們可以看下商品表的SQL語(yǔ)句,其中有很多包含[]的注釋?zhuān)?code style="font-size: 14px;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);">sa-plus就是根據(jù)這些規(guī)則來(lái)生成代碼的;
          CREATE TABLE `ser_goods` (
            `id` bigint(20NOT NULL AUTO_INCREMENT COMMENT '記錄id [num no-add]',
            `name` varchar(200DEFAULT NULL COMMENT '商品名稱(chēng) [text j=like]',
            `avatar` varchar(512DEFAULT NULL COMMENT '商品頭像 [img]',
            `image_list` varchar(2048DEFAULT NULL COMMENT '輪播圖片 [img-list]',
            `content` text COMMENT '圖文介紹 [f]',
            `money` int(11DEFAULT '0' COMMENT '商品價(jià)格 [num]',
            `type_id` bigint(20DEFAULT NULL COMMENT '所屬分類(lèi) [num]',
            `stock_count` int(11DEFAULT '0' COMMENT '剩余庫(kù)存 [num]',
            `status` int(11DEFAULT '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-apple]\n[fk-s js=(type_id=sys_type.id), show=name.所屬分類(lèi), drop]\n';
          • 這里的規(guī)則比較多,大家可以自行對(duì)照下表查看;
          • 最后我們?cè)賮?lái)看下已經(jīng)生成好的API文檔,商品表的CRUD接口文檔都有了,非常詳細(xì);
          • 而且API文檔中還提供了接口測(cè)試功能,是不是很貼心!

          總結(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

          瀏覽 28
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一级电影在线看 | 影音先锋男人站你懂的 | 国产成人主播 | 8x8x8二区 | 国产精品无码久久久 |