循序漸進VUE+Element 前端應用開發的系列文章中,前面介紹了系統各個功能的處理實現,本篇隨筆從一個主線上介紹前后端開發的整合,讓我們從ABP框架后端的查詢接口的處理,前端API接口調用的封裝,以及前端Element界面的整個調用過程進行一個完整的介紹。
我們前面介紹了Vue+Element前端的接口是調用后端的ABP框架發布的API接口服務,API接口服務通過Swagger公布對應的接口信息供我們前端開發使用,提供非常好的便利;而我們使用Vue+Element的前端框架,也是需要對后端接口API的調用進行一個簡單的抽象基類封裝,使得常規的增刪改查等常規接口繼承基類即可使用,而不需要累贅、重復的代碼;另外Vue+Element通過頁面進行獲取數據的過程中,可以傳入對應的API參數條件,如分頁信息和查詢條件信息,這樣就基本滿足了一個常規的查詢獲取數據列表的操作,獲得的數據綁定在界面的Table控件上即可。
1、ABP框架的后端接口實現
我根據項目之間的關系,整理了一個架構的圖形,如下所示。
上圖中,其中橘紅色部分就是我們為各個層添加的類或者接口,分層上的序號是我們需要逐步處理的內容,我們來逐一解讀一下各個類或者接口的內容。
ABP框架后端項目解決方案視圖如下所示。
其中在Web.Host中整合了Swagger,ABP+Swagger負責API接口的發布展示管理,如下是API接口的管理界面。
進一步查看GetAll的API接口說明,我們可以看到對應的條件參數,如下所示。
這些是作為查詢條件的處理,用來給后端獲取對應的條件信息,從而過濾返回的數據記錄的。
那么我們前端界面也需要根據這些參數來構造查詢界面,我們可以通過部分條件進行處理即可,其中MaxResultCount和SkipCount是用於分頁定位的參數。
在應用服務層接口類里面,重寫CreateFilteredQuery可以設置GetAll的查詢規則,重寫ApplySorting則可以指定列表的排序順序。
或者菜單模塊的處理如下所示。
子類一般就是實現這些函數重寫即可,因為在基類處理函數里面,已經整合了各自的調用邏輯,整合了條件處理、分頁、排序等條件函數。
以下是基類CrudAppService的GetAll函數實現。
2、Vue+Element的前端框架API類的封裝
引入了前后端分離的Vue + Element 作為前端技術路線,那么前后端的邊界則非常清晰,前端可以在通過網絡獲取對應的JSON就可以構建前端的應用了。
一般來說,我們頁面模塊可能會涉及到Store模塊,用來存儲對應的狀態信息,也可能是直接訪問API模塊,實現數據的調用並展示。在頁面開發過程中,多數情況下,不需要Store模塊進行交互,一般只需要存儲對應頁面數據為全局數據狀態的情況下,才可能啟用Store模塊的處理。
通過WebProxy代理的處理,我們可以很容易在前端中實現跨域的處理,不同的路徑調用不同的域名地址API都可以,最終轉換為本地的API調用,這就是跨域的處理操作。
前端根據ABP后端的接口進行前端JS端的類的封裝處理,引入了ES6類的概念實現業務基類接口的統一封裝,簡化代碼。
權限模塊我們涉及到的用戶管理、機構管理、角色管理、菜單管理、功能管理、審計日志、登錄日志等業務類,那么這些類繼承BaseApi,就會具有相關的接口了,如下所示繼承關系。
其中JS類的BaseApi具有常規的增刪改查接口,如下所示。
3、Vue+Element的前端框架的頁面查詢和數據展示
主體框架界面采用的是基於后台配置的菜單動態生成,左側是菜單,右邊頂部是特定導航條和內容區。
系統主界面的開發,基本上都是標准的界面,在系統左側放置系統菜單,右側中間區域則放置列表展示內容,但是在系統菜單比較多的時候,就需要把菜單分為幾級處理。系統菜單在左側放置一個自定義菜單組件列表,這樣通過樹形列表的收縮折疊,就可以放置非常多的菜單功能了。
在ABP + Vue + Element 快速開發框架里面,我們BS前端的菜單和其CS的菜單是各自分開的,我們在后台的權限模塊系統中維護菜單內容並分配給對應角色用戶,在用戶登錄系統后,動態加載菜單展示,並通過菜單的配置信息,跳轉到對應的路由上去進行頁面展示處理。
菜單資源管理的列表界面界面如下所示
用戶列表包括分頁查詢及列表展示、以及可以利用按鈕進行新增、編輯、查看用戶記錄,或者對指定用戶進行重置密碼操作。
如對於菜單管理列表來說,我們前端定義了一個表單用於查詢處理,可以根據顯示名稱和創建時間進行查詢,如下代碼所示。
前面我們介紹了前端API調用的封裝類,如下結構所示。
那么我們前端頁面需要引入對應的菜單Api類,如下引用即可。
我們在頁面模塊的JS里面定義了data屬性包括用於承載數據列表的list和分頁信息pageinfo,如下代碼所示。
根據頁面輸入的條件和data里面存儲的分頁信息,那么我們就可以根據條件進行服務器端的數據請求了。
上面構造了條件,然后根據條件,直接調用menuApi的類進行處理獲取列表即可。
為了方便讀者理解,我列出一下前面幾篇隨筆的連接,供參考:
循序漸進VUE+Element 前端應用開發(1)--- 開發環境的准備工作
循序漸進VUE+Element 前端應用開發(2)--- Vuex中的API、Store和View的使用
循序漸進VUE+Element 前端應用開發(3)--- 動態菜單和路由的關聯處理
循序漸進VUE+Element 前端應用開發(4)--- 獲取后端數據及產品信息頁面的處理
循序漸進VUE+Element 前端應用開發(5)--- 表格列表頁面的查詢,列表展示和字段轉義處理
循序漸進VUE+Element 前端應用開發(6)--- 常規Element 界面組件的使用
循序漸進VUE+Element 前端應用開發(7)--- 介紹一些常規的JS處理函數
循序漸進VUE+Element 前端應用開發(8)--- 樹列表組件的使用
循序漸進VUE+Element 前端應用開發(9)--- 界面語言國際化的處理
循序漸進VUE+Element 前端應用開發(10)--- 基於vue-echarts處理各種圖表展示
循序漸進VUE+Element 前端應用開發(11)--- 圖標的維護和使用
循序漸進VUE+Element 前端應用開發(12)--- 整合ABP框架的前端登錄處理
循序漸進VUE+Element 前端應用開發(13)--- 前端API接口的封裝處理
循序漸進VUE+Element 前端應用開發(14)--- 根據ABP后端接口實現前端界面展示
循序漸進VUE+Element 前端應用開發(15)--- 用戶管理模塊的處理
循序漸進VUE+Element 前端應用開發(16)--- 組織機構和角色管理模塊的處理
循序漸進VUE+Element 前端應用開發(17)--- 菜單管理
循序漸進VUE+Element 前端應用開發(18)--- 功能點管理及權限控制
循序漸進VUE+Element 前端應用開發(19)--- 后端查詢接口和Vue前端的整合
使用代碼生成工具快速生成基於ABP框架的Vue+Element的前端界面
循序漸進VUE+Element 前端應用開發(20)--- 使用組件封裝簡化界面代碼
循序漸進VUE+Element 前端應用開發(21)--- 省市區縣聯動處理的組件使用
循序漸進VUE+Element 前端應用開發(22)--- 簡化main.js處理代碼,抽取過濾器、全局界面函數、組件注冊等處理邏輯到不同的文件中
循序漸進VUE+Element 前端應用開發(23)--- 基於ABP實現前后端的附件上傳,圖片或者附件展示管理
循序漸進VUE+Element 前端應用開發(24)--- 修改密碼的前端界面和ABP后端設置處理
循序漸進VUE+Element 前端應用開發(25)--- 各種界面組件的使用(1)
循序漸進VUE+Element 前端應用開發(26)--- 各種界面組件的使用(2)
循序漸進VUE+Element 前端應用開發(27)--- 數據表的動態表單設計和數據存儲
循序漸進VUE+Element 前端應用開發(28)--- 附件內容的管理
循序漸進VUE+Element 前端應用開發(29)--- 高級查詢條件的界面設計
部署基於.netcore5.0的ABP框架后台Api服務端,以及使用Nginx部署Vue+Element前端應用
循序漸進VUE+Element 前端應用開發(30)--- ABP后端和Vue+Element前端結合的分頁排序處理
循序漸進VUE+Element 前端應用開發(31)--- 系統的日志管理,包括登錄日志、接口訪問日志、實體變化歷史日志
循序漸進VUE+Element 前端應用開發(32)--- 手機短信動態碼登陸處理
循序漸進VUE+Element 前端應用開發(33)--- 郵件參數配置和模板郵件發送處理
使用Vue-TreeSelect組件實現公司-部門-人員級聯下拉列表的處理
使用Vue-TreeSelect組件的時候,用watch變量方式解決彈出編輯對話框界面無法觸發更新的問題