“站在巨人的肩膀上”,这样一来,不要万事亲恭,在值得的方向上节约时间,毕竟人生就这么一次。在接触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,望技术有成后能回来看见自己的脚步

整合X-Admin前端框架改造ABP的更多相关文章

  1. JData 整合ArtTemplate的前端框架

    因为项目需要和自己的兴趣,几个月前结合模板解析神速的ArtTemplate,自己写了个框架取名JData,多多指教啊---因为一直没时间写文档,为了能够更方便地使用和避免我把代码忘了,今天抽空把文档写 ...

  2. 【前端框架系列】浅谈当前基于bootstrap框架的几种主流前端框架

    一  概述 当新开发一个项目或产品时,技术选型是一个不可缺少的环节,在软件架构中有着举足轻重的作用,可以这么说,技术选型的好坏直接影响项目或产品的成败优劣,因此,在进行软件架构时,一定要想好技术选型. ...

  3. 极致简洁的微前端框架-京东MicroApp开源了

    前言 MicroApp是一款基于类WebComponent进行渲染的微前端框架,不同于目前流行的开源框架,它从组件化的思维实现微前端,旨在降低上手难度.提升工作效率.它是目前市面上接入微前端成本最低的 ...

  4. 10大H5前端框架

    作为一名做为在前端死缠烂打6年并且懒到不行的攻城士,这几年我还是阅过很多同门从知名到很知名的各种前端框架,本来想拿15-20个框架来分享一下,但在跟几个前辈讨教写文章的技巧时果断被无情的打击了,所以这 ...

  5. 前端框架——BootStrap学习

    BootStrap简单总结下:1.栅格系统,能够很好的同时适应手机端和PC端(及传说中的响应式布局) 2.兼容性好 接下来是对BootStrap学习的一些基础案例总结和回顾: 首先引入:bootstr ...

  6. 10大html5前端框架

    Bootstrap 首先说 Bootstrap,估计你也猜到会先说或者一定会有这个( 呵呵了 ),这是说明它的强大之处,拥有框架一壁江山的势气.自己刚入道的时候本着代码任何一个字母都得自己敲出来挡我者 ...

  7. b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释

    继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更新页面显示状态这种方式在运作的,从若干年前简单的ajax流行起来 ...

  8. H5前端框架推荐合集

    Ionic ionic 吧开发流程都帮你做好了,已经不再是单纯的UI框架,而是开发框架了,非常适合快速开发.基于angular2,丰富的UI组件,大大改进的编程模型, Semantic UI 中文官网 ...

  9. 一款简单而不失强大的前端框架——【Vue.js的详细入门教程①】

    ↓— Vue.js框架魅力 —↓ 前言       Vue.js 是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.V ...

随机推荐

  1. 微信小程序开发框架技术选型

    目前微信小程序开发有三种方式,原生微信小程序,使用mpVue或wepy微信小程序开发框架. 三种开发方式横向对比资料如下:  

  2. CDN及CDN加速原理

    本想自己写这个主题的文章,但网上已经有人写了一篇非常好的文章,觉得难以望其项背.就没有必要再写,直接转载如下: 在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度.优化现有Inte ...

  3. expdb和impdb使用方法

    一  关于expdp和impdp     使用EXPDP和IMPDP时应该注意的事项:EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具 ...

  4. 深入NGINX:nginx高性能的实现原理

    深入NGINX:我们如何设计它的性能和扩展性 来源: cnBeta  原文链接 英文原文:Inside NGINX: How We Designed for Performance & Sca ...

  5. maven重新导入,不能拉到最新jar包的问题

    需要删除本地jar,再重新reimport  pom.xml

  6. idea 和 eclipse 常用快捷键汇总

    序号 所属类别 快捷键名称 快键键方式 备注 所属平台 1 查询类 search everywhere double shift    idea 2 全文搜索 ctrl + H   通用 3 打开资源 ...

  7. sql server 高可用日志传送

    一. 日志传送概述 SQL Server使用日志传送,可以自动将主服务器的事务日志备份发送到一个或多个辅助数据库上.可选的监视服务器,记录备份和还原操作的历史记录及状态. 优点 提供灾难恢复解决方案 ...

  8. 【数据结构】B-Tree, B+Tree, B*树介绍

    [摘要] 最近在看Mysql的存储引擎中索引的优化,神马是索引,支持啥索引.全是浮云,目前Mysql的MyISAM和InnoDB都支持B-Tree索引,InnoDB还支持B+Tree索引,Memory ...

  9. java中的取整(/)和求余(%)

    1.取整运算符取整从字面意思理解就是被除数到底包含几个除数,也就是能被整除多少次,那么它有哪些需要注意的地方呢?先看下面的两端代码: int a = 10; int b = 3; double c= ...

  10. ucloud发送短信的php sdk

    在ucloud官方的版本中,只有python的sdk可供调用,现提供php的sdk发送短信 项目地址:https://github.com/newjueqi/ucloudsms 使用方法: (1)在c ...