ABP Framework 5.2 RC 釋出及新增功能介紹

iEricLee發表於2022-03-11

ABP Framework 5.2 RC 新增功能

本文將介紹 ABP Framework 5.2 RC 版新增的主要功能:

  • 單層解決方案模板
  • API 版本控制
  • 原始碼控制移除libs資料夾
  • 對 Swagger UI 隱藏 ABP 預設端點
  • CMS Kit應用模組自定義全域性 CSS 和 JavaScript

關注 ABP Framework 最新開發進度,後面還會陸續釋出新功能詳解新功能示例等系列文章,敬請關注!
ABP Framework 研習社(QQ群:726299208)
專注 ABP Framework 學習,經驗分享、問題討論、示例原始碼、電子書共享,歡迎加入!

單層解決方案模板

ABP啟動模板是一個組織良好的分層解決方案,用於建立可維護的應用程式。然而,一些開發人員發現,對於簡單和短期的應用程式來說,它有點複雜。對於這樣的應用程式,我們提供一個新的啟動模板,沒有分層、確保專案結構儘可能簡單,但是在執行時功能,特性和模組齊全,一切都包含單個專案(csproj)中,如下圖所示:

在建立解決方案時,模板引數使用 -t app-nolayers:

abp new BookStore -t app-nolayers --preview

EF Core 資料庫遷移

建立專案之後,需要在執行應用程式之前建立資料。我們已經嚮應用程式新增了一個引數--migrate-database,可以指定該引數用來進行資料庫遷移和初始化資料。在命令列終端開啟專案目錄(包含csproj檔案),輸入以下命令:

dotnet run --migrate-database

將執行資料庫遷移並退出,然後就可以正常執行應用程式了。

也可以使用命令 dotnet ef database update (或者 Visual Studio's Package Manager Console 中使用 Update-Database 命令)建立資料庫表,但是,不會生成執行應用程式所必需的初始資料

為了讓解決方案保持簡單,我們並沒有新增其他應用,比如:單獨用於遷移資料庫的DbMigrator專案。

使用應用程式本身進行遷移資料庫不但可以用於開發環境,也可以在生產環境中使用。但是,還有其他遷移資料庫的方法。請閱讀更多關於微軟文件

UI 和 資料庫 選項

單層解決方案模板同樣支援 Angular 和 Blazor UI,資料庫也支援 MongoDB。對於 UI,可以為 -u--ui 引數設定 mvc(預設)、angularblazor-server 引數以支援不同的UI框架。對於資料庫提供程式,可以為-d--database-provider引數設定 ef(預設)或者mongodb 以支援不同的資料庫提供程式。

示例:

abp new BookStore -t app-nolayers -u angular -d mongodb --preview

以上命令建立一個單層解決方案,使用 Angular 作為 UI框架,使用 MongoDB 作為資料庫提供程式。

API 版本控制

API版本控制在ABP框架中一直是可用的,但是我們還沒有提供相應的文件。對於版本 5.2 ,我們建立了一個文件來解釋如何為應用程式實現API版本控制,並向您的標準應用程式服務類新增版本控制支援。請參閱文件

原始碼控制移除libs資料夾

注意:對於開發環境和CI/CD管道來說可能是一個破壞改變。因此,請仔細閱讀本文件並採取必要的措施。

當你建立的解決方案使用 MVC(Razor Pages) 或 Blazor Server UI 框架時,在解決方案的UI專案中包含一個 wwwroot/libs 目錄,結構如下:

libs目錄包含所有客戶端依賴類庫(大多數為 JavaScript 和 CSS)。舉個例子,在上圖中 bootstrap 目錄包含 Bootstrap 類庫所需的必要檔案。該目錄中的內容是從 node_modules 目錄中複製而來(只複製最小的必須檔案,確保類庫可用,並不是整個類庫),通過 ABP CLI 提供的 abp install-libs 命令完成。

在 5.2 版本之前,libs目錄是啟動模板中的一部分,並提交到原始碼控制系統中,比如:Git。在 5.2 版本之後,該目錄預設從原始碼控制中移除,所以開發者必須在解決方案中UI專案的根目錄中執行abp install-libs命令來安裝前端依賴庫。這種方法為解決方案節省了大量空間。例如,MVC UI應用程式的初始大小從 9.83 MB減少到 0.23 MB。

當你使用 ABP CLI 建立解決方案時,install-libs命令會自動執行,所以你的應用程式可以直接工作。但是,如果你的團隊成員(或CI/CD系統)是從原始碼控制系統(如Github)獲取解決方案原始碼,那麼應該在執行之前執行abp install-libs命令。

如果你想將 libs 目錄新增到原始碼控制系統中,可以在解決方案根目錄中找到 .gitignore 檔案,移除 **/wwwroot/libs/* 這一行即可。如果你使用的是 Git 以外的版本控制系統,你應該應用系統提供的設定規則來包含或排除 libs 資料夾。

對 Swagger UI 隱藏 ABP 預設端點

Engincan Veske 寫了一篇文章來解釋如何從 Swagger UI 中隱藏 ABP預設端點。然後我們認為這可能是ABP框架中的一個很好的內建選項,所以在 AddAbpSwaggerGen 方法中新增了一個HideAbpEndpoints 方法,可以像下面的程式碼示例使用:

services.AddAbpSwaggerGen(
    options => 
    {
        //... 其他設定
        
        //在Swagger UI上隱藏ABP相關的端點
        options.HideAbpEndpoints();
    }
)

這樣設定之後,ABP的預設端點仍然存在,但將在 Swagger UI 中隱藏。

CMS Kit 應用模組自定義全域性 CSS 和 JavaScript

我們一直在改進 CMS Kit 應用模組,並不斷新增新功能。在 5.2 版本中新增的特性是:全域性資源系統,可以為應用程式編寫自定義的全域性 JavaScript 或 CSS 程式碼,並應用於所有應用程式頁面中:

通過這種方式,您可以在執行時定製應用程式的外觀和行為。有關更多資訊,請參閱文件

請注意,頁面功能已經提供作用於頁面的指令碼/樣式編輯器。但是這個新功能允許您編寫作用於應用程式所有頁面的指令碼/樣式,二者可以結合使用。

其他

  • 為 Blazor UI 升級 Blazorise 類庫到 v1.0,升級之後確保應用程式中所有依賴 Blazorise 包使用 v1.0

歷史版本回顧

ABP Framework 5.0 RC.1 新特性和變更說明
ABP Framework V4.4 RC 新增功能介紹

dotNET兄弟會-公眾號

專注.Net開源技術及跨平臺開發!致力於構建完善的.Net開放技術文庫!為.Net愛好者提供學習交流家園!

image

相關文章