主頁 > 企業開發 > VUE+Element 前端應用開發框架功能介紹

VUE+Element 前端應用開發框架功能介紹

2020-09-14 11:00:20 企業開發

前面介紹了很多ABP系列的文章《ABP框架使用》,一步一步的把我們日常開發中涉及到的Web API服務構建、登錄日志和操作審計日志、字典管理模塊、省份城市的資訊維護、權限管理模塊中的組織機構、用戶、角色、權限、選單等內容,以及配置管理模塊,界面的高級查詢處理等內容,并根據我們在Winform領域多年的開發經驗,完成了系統功能在Winform界面下的實作,并利用工具實作快速的Winform界面生成作業;而在循序漸進VUE+Element 前端應用開發文章《循序漸進VUE+Element》中,則介紹了結合ABP+Vue+Element來構建BS的前端解決方案,通過Vue+Element實作的前端界面展示,界面美觀大方;而且業務內容以模塊化組裝的Web界面,非常利于大型復雜系統的開發,極大提供了效率,

1、ABP框架背景知識介紹

ABP是ASP.NET Boilerplate的簡稱,ABP是一個開源且檔案友好的應用程式框架,ABP不僅僅是一個框架,它還提供了一個最徍實踐的基于領域驅動設計(DDD)的體系結構模型,學習使用ABP框架也有一段時間了,一直想全面了解下這個框架的整個來龍去脈,并把想把它使用歷程整理成一個系列出來,不過一直沒有下筆來寫這篇文章的開篇,就是希望能夠深入了解,再深入了解一些,希望自己能夠理解透徹一些,不能誤人子弟,也不想和網上千篇一律的翻譯官網的內容,官網的英文介紹也已經很詳細了,于是我覺得還是以實際使用的程序進行一定的整理會更好,

初次了解ABP框架,對它還是非常驚艷的,它基本上是.NET 領域架構的集大成者,幾乎囊括了我們.NET領域排的上名的各種技術應用,而且它本身可以支持.net framework和.net core兩種技術流派,對它的介紹也是非常感興趣,

1)ABP框架的特點

我們來大概了解下ABP框架涉及到的內容,

  • 依賴注入,這個部分使用 Castle windsor (依賴注入容器)來實作依賴注入,這個也是我們經常使用IOC來處理的方式;
  • Repository倉儲模式,已實作了Entity Framework、NHibernate、MangoDB、記憶體資料庫等,倉儲模式可以快速實作對資料介面的呼叫;
  • 身份驗證與授權管理,可以使用宣告特性的方式對用戶是否登錄,或者介面的權限進行驗證,可以通過一個很細粒度的方式,對各個介面的呼叫權限進行設定;
  • 資料有效性驗證,ABP自動對介面的輸入引數物件進行非空判斷,并且可以根據屬性的申請資訊對屬性的有效性進行校驗;
  • 審計日志記錄,也就是記錄我們對每個介面的呼叫記錄,以及對記錄的創建、修改、洗掉人員進行記錄等處理;
  • Unit Of Work作業單元模式,為應用層和倉儲層的方法自動實作資料庫事務,默認所有應用服務層的介面,都是以作業單元方式運行,即使它們呼叫了不同的存盤物件處理,都是處于一個事務的邏輯里面;
  • 例外處理,ABP框架提供了一整套比較完善的流程處理操作,可以很方便的對例外進行進行記錄和傳遞;
  • 日志記錄,我么可以利用Log4Net進行常規的日志記錄,方便我們跟蹤程式處理資訊和錯誤資訊;
  • 多語言/本地化支持,ABP框架對多語言的處理也是比較友好的,提供了對XML、JSON語言資訊的配置處理;
  • Auto Mapping自動映射,這個是ABP的很重要的物件隔離概念,通過使用AutoMaper來實作域物件和DTO物件的屬性映射,可以隔離兩者的邏輯關系,但是又能輕松實作屬性資訊的賦值;
  • 動態Web API層,利用這個動態處理,可以把Application Service 直接發布為Web API層,而不需要在累贅的為每個業務物件手工創建一個Web API的控制器,非常方便;
  • 動態JavaScript的AJax代理處理,可以自動創建Javascript 的代理層來更方便使用Web Api,這個在Web層使用,

除了這些重要特性外,ABP框架還有很多一些特別的功能或者概念,

  • 多租戶支持(每個租戶的資料自動隔離,業務模塊開發者不需要在保存和查詢資料時寫相應代碼;
  • 軟洗掉支持(繼承相應的基類或實作相應介面,會自動實作軟洗掉)
  • 系統設定存取管理(系統級、租戶級、用戶級,作用范圍自動管理)
  • EventBus實作領域事件(Domain Events)
  • 模塊以及模塊的依賴關系實作插件化的模塊處理等等

ABP框架主要還是基于領域驅動的理念來構建整個架構的,其中領域驅動包含的概念有 域物件Entities、倉儲物件Repositories、域服務介面層Domain Services、域事件Domain Events、應用服務介面Application Services、資料傳輸物件DTOs等,

ABP官方網站:http://www.aspnetboilerplate.com,從里面可以查看很詳細的案例和檔案說明,可以根據需要下載不同型別的基礎框架,

ABP GitHub原始碼地址:https://github.com/aspnetboilerplate,可以下載整個基礎的框架內容,以及相關的樣板案例代碼,

基于ABP框架基礎上,我們整理完善了整個權限體系,以及基于這個基礎上進行的業務系統快速開發,我們整理后的ABP快速開發框架的架構圖示,如下圖所示(以字典模塊為例說明)

 

以上是后端API的框架架構,引入了前后端分離的Vue + Element 作為前端技術路線,那么前后端的邊界則非常清晰,前端可以在通過網路獲取對應的JSON就可以構建前端的應用了,

在前端處理中,主要就是利用Vuex模式中的Store物件里實作對Action和Mutation的請求處理,獲取資料后,實作對State狀態中的資料進行更新,如果僅僅是當前頁面的資料處理,甚至可以不需要存盤State資訊,而直接通過前端封裝的API類獲取到回傳的資料,直接更新到界面視圖上即可,

Vue + Element前端專案的視圖、Store模塊、API模塊、Web API之間關系如下所示,

前端根據ABP后端的介面進行前端JS端的類的封裝處理,引入了ES6類的概念實作業務基類介面的統一封裝,簡化代碼,

權限模塊我們涉及到的用戶管理、機構管理、角色管理、選單管理、功能管理、審計日志、登錄日志等業務類,那么這些類繼承BaseApi,就會具有相關的介面了,如下所示繼承關系,

 

2、基于Vue + Element前端ABP框架功能介紹

1)登錄界面

 系統登錄界面效果如下所示,

  或者

 其中里面的文本內容,我們都是以國際化處理內容,

 

2)主體框架界面

主體框架界面采用的是基于后臺配置的選單動態生成,左側是選單,右邊頂部是特定導航條和內容區,

首頁內容區包括了一些常規的統計展示資訊和各種圖表綜合展示內容,

我們來看看圖表展示的效果圖,其中柱狀圖效果如下所示,

 餅狀圖效果如下所示,

 曲線圖效果如下所示,

 其他型別,極坐標和散點圖形

 或者曲線和柱狀圖組合的圖形

 其中頂部導航條,提供查詢、全屏切換、修改布局大小、多語言選擇選單、頭像及快捷選單處理,

 

3)用戶管理界面

用戶串列包括分頁查詢及串列展示、以及可以利用按鈕進行新增、編輯、查看用戶記錄,或者對指定用戶進行重置密碼操作,

 

我們把常規的串列界面,新增、編輯、查看、匯入等界面放在一起,除了串列頁面,其他內容以彈出層對話框的方式進行處理,如下界面示意所示,

 用戶編輯界面如下所示,

 當然可以查看這個用戶本身擁有的權限功能點和擁有的選單,如下界面所示,

  

4)組織機構管理

組織機構主要就是一個層級的物件關系,一般包含但不限于公司、部門、作業組等的定義,其中組織機構包含用戶成員和角色成員的關系,如下界面所示,

 

 組織機構可以修改機構名稱和對應的父類節點,如下界面所示,

 組織機構包含的成員可以添加多個人員記錄,其中可以對組織成員串列進行添加、洗掉的操作,,

 單擊機構串列界面中組織成員部分的【添加成員】按鈕,彈出對話框選擇添加組織成員,

 

組織機構中角色串列界面如下所示,其中可以對角色串列進行添加、洗掉的操作,

 單擊機構串列界面中角色部分的【添加角色】按鈕,彈出對話框選擇添加角色,

 

   

5)角色管理

角色資訊沒有層級關系,可以通過串列展示,

 其中角色包含權限分配、角色成員和擁有選單的維護,如下是角色編輯界面,包含角色基本資訊、擁有權限、包含成員、擁有選單的管理等,選單對于角色來說,應該是一種界面資源,可以通過配置進行管理對應角色用戶的選單,

編輯界面如下所示,

角色的權限包含系統可以用的權限,并可以勾選為角色設定所需的功能點,如下界面所示,

 

 用戶成員則和機構的用戶管理一樣,可以指定多個用戶,這里不再贅述,

而選單對于角色來說,應該是一種界面資源,可以通過配置進行管理對應角色用戶的選單,如下界面所示,

 通過配置好角色包含的選單,用戶登錄系統后,系統根據當前用戶角色具有的選單專案,動態構建顯示對應的串列選單及篩選可用路由串列,

 

6)功能管理

 嚴格來說,ABP框架并沒有統一管理好權限功能點的,它沒有任何表來存盤這個功能集合,而是通過派生AuthorizationProvider的子類來定義權限功能點

我在這個基礎上引入了一個權限功能的表用來存盤功能點的,然后提供管理界面來動態維護這些功能點,如下界面所示,

 

我們剛才在角色里面看到可以分配的權限內容,就是基于這個權限表的資訊展示,

這樣我們可以動態添加或者批量添加所需要的功能點,并且和整個權限管理模塊串聯起來,形成一個完整的控制體系,

 

另外我們還可以通過左側樹串列的按鈕管理串列,可以添加、編輯、洗掉或級聯洗掉對應的節點及其下面所有子節點,

 

系統登錄后,客戶端自動獲取對應用戶的角色功能點,然后我們每次打開一個新的業務表單,客戶端會進行界面的權限邏輯控制,如果沒有權限的,那么不可以訪問操作,如下是禁止了產品資訊的匯入、匯出、新增、編輯等操作功能,如下界面所示產品界面被動態取消相關權限后,界面禁止了某些操作功能,

 

7)選單管理

系統主界面的開發,基本上都是標準的界面,在系統左側放置系統選單,右側中間區域則放置串列展示內容,但是在系統選單比較多的時候,就需要把選單分為幾級處理,系統選單在左側放置一個自定義選單組件串列,這樣通過樹形串列的收縮折疊,就可以放置非常多的選單功能了,

在ABP + Vue + Element 快速開發框架里面,我們BS前端的選單和其CS的選單是各自分開的,我們在后臺的權限模塊系統中維護選單內容并分配給對應角色用戶,在用戶登錄系統后,動態加載選單展示,并通過選單的配置資訊,跳轉到對應的路由上去進行頁面展示處理,

選單資源管理的串列界面界面如下所示

 

單擊左側樹串列專案,會在右側展示對應父節點下的選單串列,

在右側的串列按鈕中,可以對已有的選單進行編輯,選單編輯界面如下所示,

我們可以通過選擇圖示按鈕進行選單圖示的選擇,如下是選擇選單圖片的界面,

 

  

8)系統登錄日志

登錄日志,這個就是用戶嘗試登錄的時候,留下的記錄資訊,其中包括用戶的登錄用戶名,ID,IP地址、登錄時間,以及登錄是否成功的狀態等資訊,

這個登錄日志,就是在系統登錄嘗試的時候,留下的記錄,可供管理員進行跟蹤了解某個賬戶的使用情況,也可以根據這些登錄資訊進行一個統計報表的分析,

查看明細界面如下所示,

  

9)系統審計日志 

審計日志,設定我們在訪問或者呼叫某個應用服務層介面的時候,橫切面流下的一系列操作記錄,其中記錄我們訪問的服務介面,引數,客戶端IP地址,訪問時間,以及例外等資訊,這些操作都是在ABP系統自動記錄的,如果我們需要屏蔽某些服務類或者介面,則這些就不會記錄在里面,否則默認是記錄的,

審計日志的明細展示界面如下所示,

 

10)字典管理

字典管理界面,左側列出字典型別,并對字典型別下的字典資料進行分頁展示,右側則利用分頁展示對應字典型別的字典資料,字典管理界面如下所示,

字典大類在左側串列進行維護,可以進行新增、編輯、洗掉等常規操作,

 而對應字典大類的新增或者編輯表單界面如下,

 批量添加字典內容的界面如下所示,

 

11)產品串列展示

產品串列要展示一個產品相關的內容,包括展示產品的圖片,以及產品資訊介紹等內容,

展示界面中的頂部,我們利用Element的界面組件定義一個走馬燈的展示效果,如下所示,

產品資訊的另一個串列展示界面如下所示,

產品資訊的編輯界面如下所示,

產品詳細說明里面,我們采用富文本編輯,這里采用了 Tinymce 第三方組件來實作編輯處理,展示效果如下所示,

產品資訊查看界面,可以對圖片進行預覽展示操作,

 

12)圖示管理

在VUE+Element 前端應用中,圖示是必不可少點綴界面的元素,因此整合一些常用的圖示是非常必要的,還好Element界面組件里面提供了很多常見的圖示,不過數量不是很多,應該是300個左右吧,因此考慮擴展更多圖示,我引入了vue-awesome組件,它利用了Font Awesome的內置圖示,實作了更多圖示的整合,

Element圖示管理界面如下:

基于Vue-Awesome的圖示管理如下所示,

其中查詢提供了名稱進行圖示查詢,以及限制一次性展示多少個,另外提供一個自定義顏色選項,從而可以改變圖示的展示顏色,

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/34190.html

標籤:JavaScript

上一篇:3.陣列.標準庫

下一篇:2020最新JavaScript開發必須知道的41個技巧,你會幾個?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more