1. 程式人生 > >初識ABP vNext(2):ABP啟動模板

初識ABP vNext(2):ABP啟動模板

[TOC] # 前言 上一篇介紹了ABP的一些基礎知識,本篇繼續介紹ABP的啟動模板。使用ABP CLI命令就可以得到這個啟動模板,其中包含了一些基礎功能模組,你可以基於這個模板來快速開發。 # 開始 首先ABP CLI的安裝以及基本指令這些就不說了,官網上寫的很清楚。目前ABP的前端部分只支援ASP.NET Core MVC / Razor Pages和Angular,移動端支援React Native。 初學者建議跟著官網https://docs.abp.io/zh-Hans/abp/latest/Tutorials/Part-1?UI=MVC這個指引做一遍,體驗一下ABP開發的基本流程,雖然ABP開發流程幾乎都標準化了,照著官網的流程編寫程式碼就能完成一個功能的開發,但是這個過程有些繁瑣,容易出錯。這裡推薦一個開源專案:https://github.com/EasyAbp/AbpHelper.GUI,這是一個ABP幫助工具,你只需要建立一個實體,剩下的程式碼它都可以幫你生成。這個專案是https://github.com/EasyAbp下的一個子專案,EasyAbp是國內ABP愛好者建立的,裡面還有很多開箱即用的模組,可以關注一下。。。 ## AbpHelper 使用AbpHelper來完成官網的例子非常容易,首先建立專案解決方案: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200808172208668-117306134.png) ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200808172259139-1144630104.png) AbpHelper提供了圖形化配置,自動幫我們執行ABP CLI指令: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200808173003735-727456081.png) 執行完成後,開啟解決方案,先啟動Acme.BookStore.DbMigrator專案來初始化資料庫: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200808173402021-1502894791.png) ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200808173329310-1112891760.png) ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200808173506095-726154508.png) 然後就可以啟動Acme.BookStore.Web專案,這是APB啟動模板的預設介面: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200808174015503-514476808.png) 接下來,在Acme.BookStore.Domain專案中建立Book實體,我直接從官網上覆制程式碼。 ```csharp public class Book : AuditedAggregateRoot { public string Name { get; set; } public BookType Type { get; set; } public DateTime PublishDate { get; set; } public float Price { get; set; } protected Book() { } public Book(Guid id, string name, BookType type, DateTime publishDate, float price) : base(id) { Name = name; Type = type; PublishDate = publishDate; Price = price; } } ``` 在Acme.BookStore.Domain.Shared專案中新增列舉類BookType: ``` public enum BookType { Undefined, Adventure, Biography, Dystopia, Fantastic, Horror, Science, ScienceFiction, Poetry } ``` 第一次使用需要安裝一下AbpHelper CLI: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200808174709856-692014386.png) 選擇Generate CRUD,填入實體名稱和解決方案路徑,然後Execute即可: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200808223929839-1900603445.png) 生成程式碼時可能會報這個錯(如果沒裝ef tools): ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200809122533017-1199719100.png) 這時安裝一下ef tools就好了,`dotnet tool install -g dotnet-ef` ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200809122703623-1534963738.png) 程式碼生成完後,執行Acme.BookStore.Web專案: 使用預設使用者 admin/1q2w3E* 登入系統,給admin角色分配BookStore相關許可權: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200809142215488-1866268604.png) 然後就可以看到book選單了,包括基本的增刪改查介面: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200809142402665-1762942163.png) 至此就完成了一個基本功能的開發,AbpHelper確實很方便,他還有CLI版本,直接命令列操作。 ## 模組安裝 ABP的模組化可以實現外掛式的開發,你可以預先構建一些通用的模組,比如日誌模組,使用者模組等等,當你以後需要時就可以直接安裝到專案中。有一些由ABP社群開發和維護的開源免費的應用程式模組,我們可以直接使用;比如我要使用官方的Blogging模組,Blogging是用於建立精美的部落格。 同樣使用AbpHelper來安裝: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200809173458658-1627766935.png) 安裝過程出了點小問題,提示找不到DbContext。。。不過沒關係,自己執行一下遷移命令就行。。。 ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200809222058906-744846658.png) Acme.BookStore.Web專案設為啟動項,預設專案為Acme.BookStore.EntityFrameworkCore.DbMigrations,然後執行: `Add-Migration AddedBlogging` `Update-DataBase` ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200809222800652-1157485564.png) 接下來再次執行Acme.BookStore.Web專案,為admin角色配置部落格相關的許可權: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200809192431041-540693524.png) 然後就就可以看到部落格的相關功能: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200809223056171-1206249551.png) Swagger: ![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200809224947937-578664104.png) 當然,這些模組不一定完全符合你的要求,你可能需要稍作修改,ABP也允許你擴充套件實體,重寫服務包括重寫使用者介面,你可以很方便的修改。這些後面再介紹,包括如何去開發這種模組。。。 # 最後 EasyAbp上也有很多開源模組,地址是:https://github.com/EasyAbp/EasyAbpGuide,目前這些模組的UI部分都只支援MVC/Razor Pages,不支援Angular之類的。。。當然模組不一定非要UI,一些Framework級別的模組就不需要UI。基礎部分就寫到這裡,主要還是需要認真看下官網,然後自己動手練習一下。下一篇將進入vue+ABP實戰部分。