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
(默認)、angular
或 blazor-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愛好者提供學習交流家園!