AgileBoot - 基於SpringBoot + Vue3的前後端快速開發腳手架

来源:https://www.cnblogs.com/valarchie/archive/2022/10/10/16777336.html
-Advertisement-
Play Games

AgileBoot 倉庫 後端地址:https://github.com/valarchie/AgileBoot-Back-End 技術棧:Springboot / Spring Security / MyBatis Plus JPA 無XML/ Druid / Redis / Hutool / J ...


AgileBoot

倉庫

後端地址:https://github.com/valarchie/AgileBoot-Back-End

技術棧:Springboot / Spring Security / MyBatis Plus JPA 無XML/ Druid / Redis / Hutool / JWT

前端地址:https://github.com/valarchie/AgileBoot-Front-End

技術棧:Vue3 + ElementUI plus + Vite

 

由來

AgileBoot這個項目的建立是因為閑暇時間想自己搗鼓一點小東西,於是當時網上找了很多快速開發腳手架。比如Ruoyi/Jeecg-boot/ElAdmin/renren等框架。

芋道也弄了一個Ruoyi-Pro的項目,但是功能一大堆,太重了,可能質量得不到保證。

最後選擇了Ruoyi框架作為自己開發一些小東西的腳手架。首先首先,非常感謝Ruoyi作者整理出這個項目。

但是當我把Ruoyi項目翻了一遍之後。發現項目的代碼水平和質量都.....   emm...   有點不像一個專業後端人員開發出來的項目。

存在一些缺陷:

  • 命名比較亂七八糟(很多很糟糕的命名,包括機翻英語亂用)
  • 項目分包以及模塊比較亂
  • 比較原始的Controller > Service > DAO的開發模式。過於面向過程。
  • 一大堆自己造的輪子,並且沒有UT覆蓋。
  • 大量邏輯嵌套在if else塊當中
  • 值的前後不統一,比如有的地方1代表是,有的地方1代表否
  • 很多很奇怪的代碼寫法(比如return result > 0 ? true:false..    一言難盡)

 

於是乎我基於Ruoyi項目,整個進行了重構。

 

重構內容

設計:

  1. 將MyBatis遷移到Mybatis Plus(遷移工作非常耗時間)+ JPA的形式進行數據增刪改 + 無XML
  2. 遷移FastJson到Jackson(FastJson的坑就不多說了)
  3. 對資料庫的表進行重新優化設計
  4. 去除所謂的低代碼生成.....(這種級別的代碼生成其實意義不大,真正拿這個腳手架來開發的話,也用不上)
  5. 各個層的日誌進行切麵列印
  6. 前後端密碼加密傳輸
  7. 設計多級緩存體系 Map -> Guava > Redis. 不同場景使用不同級別的緩存。Redis緩存內嵌入本地緩存。
  8. 合理的分包: common(公共包) / infrastructure(基礎框架設施) / domain(業務邏輯) / orm(數據層) / admin(管理後臺) / api (外部API)
  9. Ruoyi的角色是多職位多角色的設計,但是作為小型快速開發腳手架,沒必要這樣設計,我改成單職位單角色。
  10. 統一註解攔截數據許可權

規範:

  1. 切分不同環境的啟動文件
  2. 統一設計異常類
  3. 統一設計錯誤碼並集中管理
  4. 統一系統內的變數並集中管理
  5. 統一返回模型
  6. 引入Google代碼格式化模板(Ruoyi的代碼格式很另類....)
  7. 後端代碼的命名基本都整改OK
  8. 前端代碼的命名也非常混亂,進行了整改

整改:

  1. 引入hutool包以及guava包去掉大量自己造的輪子(大量工作.....)
  2. 引入lombok去除大量getter setter代碼
  3. 調整日誌級別
  4. 字典類型數據完全用Enum進行代替
  5. 移除SQL註入的Filter,因為遷移到Mybatis Plus就不會有這個註入的問題
  6. XSS直接通過JSON攔截過濾。
  7. 替換掉很多Deprecated的類以及配置

優化:

  1. 優化非同步服務
  2. 優化Excel相關類的設計,採用hutool包成熟的輪子
  3. 許可權判斷使用緩存
  4. IP地址查詢引入離線包
  5. 引入多級緩存體系

 

還有很多整改的點一時想不起來了,很多細枝末節的改動,整改整個項目花了很多時間。基本上整個項目都重構了一遍。

 

項目的願景

想致力於打造一個真正能用在生產的小型開發腳手架,可用於外包或者公司內部的小項目。Ruoyi感覺有點像玩具項目。但是也很多人直接拿去用。

但是用著應該不是那麼省心。

本項目的主要目標是

  1. 安全性
  2. 代碼規範性
  3. 更面向對象(偽DDD)
  4. 小而美的理念(不會加一大堆功能...) 如果有非常常用的功能的話,可以討論加上
  5. 真正的生產型項目

 

 

項目操作手冊

前提:安裝好 MySQL / Redis / npm 

 

後端項目:

 

  • git clone https://github.com/valarchie/AgileBoot-Back-End
  • IDEA引入項目
  • 更改資料庫賬號
  • 更改Redis賬號
  • 更改IDEA啟動配置
  • IDEA -> Run 即可

 

 

 

 

前端項目:

  • git clone https://github.com/valarchie/AgileBoot-Front-End
  • Vscode引入項目
  • npm install
  • npm run dev

 

訪問localhost即可

 

最後

本人水平一般能力有限。有錯誤或者代碼規範或者設計上的問題,懇請大家指出。歡迎大家提Issue, 提PR. 每周都會更新。

PS:前端方面是小白,有大佬來一起優化嗎~ 嘿嘿

 

交流群:1398880

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [Android開發學iOS系列] iOS寫UI的幾種方式 作為一個現代化的平臺, iOS的發展也經歷了好幾個時代. 本文講講iOS寫UI的幾種主要方式和各自的特點. iOS寫UI的方式 在iOS中寫UI有多種選擇, 大的分類: 使用UIKit還是SwiftUI. 在使用UIKit的情形下, 還根據 ...
  • 一、新建原生工程和Flutter Module 1、新建Android工程 搭建一個空的Android工程FlutterDemo_Android模擬已經存在的原有工程 Android項目配置: 2、新建iOS工程 搭建一個空的iOS工程FlutterDemo_iOS模擬已經存在的原有工程 Xcode ...
  • 鬥魚直播相信大家都聽說過,打開鬥魚官網就可以直接在瀏覽器中觀看直播。那麼鬥魚是如何實現瀏覽器視頻直播的呢?本篇文章就來解析鬥魚是如何實現直播的,以及它是如何節省 80% 的 CDN 流量,要知道視頻直播流量費並不便宜,鬥魚每個月光這些流量費都要支付幾個億,節省 CDN 流量就是省錢。 直播技術方案 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前言 隨著業務的需求,項目需要支持H5、各類小程式以及IOS和Android,這就需要涉及到跨端技術,不然每一端都開發一套,人力成本和維護成本太高了。團隊的技術棧主要以Vue為主,最終的選型是以uni-app+uview2.0作為跨端技術 ...
  • 在《基於 vite 創建 vue3 項目》一文中整合了 pinia,有不少伙伴不知道 pinia 是什麼,本文簡單介紹 pinia。主要包括三方面: pinia 的基本用法,在《基於 vite 創建 vue3 項目》中 demo 的基礎上簡單重構。 如何持久化 pinia 中的數據,保證瀏覽器刷新時 ...
  • 項目地址 npm庫地址:https://www.npmjs.com/package/dd-ui-library 組件庫:https://github.com/YolandaKisses/ui-library 目錄結構 ├─ src │ └─ components // 存放測試頁面 │ └─ lib ...
  • 微前端概述 微前端概念是從微服務概念擴展而來的,摒棄大型單體方式,將前端整體分解為小而簡單的塊,這些塊可以獨立開發、測試和部署,同時仍然聚合為一個產品出現在客戶面前。可以理解微前端是一種將多個可獨立交付的小型前端應用聚合為一個整體的架構風格。 微前端不是一門具體的技術,而是整合了技術、策略和方法,可 ...
  • 背景 滑鼠拖拽元素移動,算是一個稍微有點點複雜的交互。 而在本文,我們就將打破常規,向大家介紹一種超強的僅僅使用純 CSS 就能夠實現的滑鼠點擊拖拽效果。 在之前的這篇文章中 -- 不可思議的純 CSS 實現滑鼠跟隨,我們介紹了非常多有意思的純 CSS 的滑鼠跟隨效果,像是這樣: 但是,可以看到,上 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...