整合X-Admin前端框架改造ABP


  “站在巨人的肩膀上”,這樣一來,不要萬事親恭,在值得的方向上節約時間,畢竟人生就這么一次。在接觸ABP以來,一直想花點時間整合LayUI前端框架到ABP中,進而能夠逐漸打磨出一套適合自己的框架,開發習慣、項目架構、界面風格等等。在年前花了點時間了解了LayUI現有的后台模板,雖然LayUI自家的LayUIAdmin很不錯,但奈何於貧窮,因此繞道看看是否有前端同胞已經弄出來一份免費版的,比較了幾份后台模板后,找到了合適的X-Admin。

   演示地址:http://123.207.15.233:9527/

   碼雲地址:https://gitee.com/530521314/Partner.Surround.git

 

一、X-Admin前端框架和ABP框架

  X-Admin是基於LayUI打造的一套前端框架,比起Bootstrap那種粗獷的風格,LayUI更加符合國人的審美觀,同時LayUI也對后端開發人員友好,在不完全掌握前端知識的前提下也能夠進行項目開發,官網地址:http://x.xuebingsi.com/

  ABP框架是一個用最佳實踐和流行技術開發現代Web應用程序的新起點,旨在快速搭建一個通用的Web應用框架和項目模板,集成着一些優秀的工具和思想,官網地址:https://aspnetboilerplate.com/

  如果覺得自己組合一套框架覺得繁瑣,可以試試使用52ABP框架,該套優秀的前后端框架由梁桐銘在ABP框架的基礎上進行整合,對於前后端相關功能進行改造,使滿足國人的開發習慣,官網地址:https://www.52abp.com/

  

二、開始整合兩個框架

  1、先從ABP官網下載項目模板。經過文件結構調整后,項目文件路徑如下,之所以項目文件路徑和官網下載下來的不完全一致,是經過了一些調整,適用自己的開發習慣,畢竟適合的才是最好的,在之前的生成流水線搭建中也提到過項目結構,目的是使之標准化,而不需要每次都要重新設置一下項目文件結構。(注意,此處我下載的是.Net Core+MPA版+去掉登錄、注冊、用戶、角色和多租戶功能)

  

 

  2、下載X-Admin源碼包,解壓后,開始着手Ctrl+C、V操作,將需要的一些js、css等文件移入到ABP中。

  

   3、去除在本次整合后部分在ABP中的不再需要的功能,如Boostrap及其相關的插件,並不是Boostrap不優秀而是LayUI是我的目的,功能相似下,沒必要在冗余存在。

   

  並在bower包管理中刪除對Boostrap的依賴,盡可能的使用大部分LayUI及LayUI社區提供的插件和功能,以減少后端開發人員的學習和使用成本。

  

   4、將X-Admin文件夾中的js文件及css文件移入到ABP中,部分ABP分裝了一層的js、css保持不變,仍然先存放着,如果后期確定不再使用,再進行移除ABP下載后自帶了一個main.css文件,可以使用這個文件或直接使用X-Admin中的css文件。  

  

  5、以現有的Layout母版頁復制一個(此處我命名為_LayoutBase),從X-Admin文件夾中查看index.html並復制Body標簽內的代碼到_Layout母版頁的Body中(我對底部的footer刪除了,位置不太合適),整理引用的js、css文件,具體可見我的Git倉庫中,使用控制器Home,方法Index的視圖作為使用_LayoutBase母版頁的視圖,其余頁面都將在Index界面中以iframe的形式出現,到現在,直接啟動項目后,初步的界面可以展現出來了。

   

 

三、優化展示效果

   1、X-Admin中,對於側邊欄收縮采用的是直接全部隱藏,在該功能的基礎上改造一些功能,使得收縮后可以留下一列圖標,實現方式可以有很多種,此處采取使用js腳本去控制左側菜單寬度實現,在xadmin.js腳本中,找到$('.container .left_open').click()方法,然后在此基礎上進行改造,如以下改造,注意,部分css也需要改造,具體見倉庫源代碼中。

$('.container .left_open').click(function (event) {
    if (!$('.left-nav #nav .layui-nav-item').hasClass('nav-mini')) {
        //左側菜單
        $('.left-nav #nav .layui-nav-item').addClass('nav-mini');
        $('.left-nav').animate({ left: '0px', width: '60px' }, 100);
        $('.sub-menu li').each(function () {
            $(this).hide();
        });

        //右側內容
        $('.page-content').animate({ left: '60px' }, 100);
        $('.page-content-bg').hide();
    } else {
        //左側菜單
        $('.left-nav .layui-nav-item').removeClass('nav-mini');
        $('.left-nav').animate({ left: '0px', width: '220px' }, 100, function () {
            $('.sub-menu li').each(function () {
                $(this).show();
            });
        });

        //右側內容
        $('.page-content').animate({ left: '220px' }, 100);
        if ($(window).width() < 768) {
            $('.page-content-bg').show();
        }
    }
});

   2、加入語言為簡體中文,在領域層中的本地資源配置中加入中文及中文語言包,此處我將中文設置為默認語言,更改原有默認的英文包的PithyDesign為PithyDesign-en,並增加一個PithyDesign.json內容與英文包一樣,將英文譯成中文即可。

  

  增加中文並設置為默認選項,如有更多語言,可以在此基礎上進行擴展。

  

  3、對X-Admin代碼包中存在的一些其它界面加入到ABP中如用戶、管理員的增刪改查界面、地址三級聯動、百度的ECharts圖表展示界面等,在增加前需要注意母版頁的設置,在按Url:Home/Index進入后台界面后,Index視圖直接套用_LayoutBase母版頁,然后其它功能頁以iframe的形式嵌入,其余功能頁使用_Layout母版頁。

  

 

 至此,整合工作算是完成了,后期考慮提高一些操作上的體驗感,同時逐步完善如用戶登錄、注冊、組織機構、角色等基礎功能。

 

2019-02-21,望技術有成后能回來看見自己的腳步


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM