简单谈谈如何提高后台管理系统的易用性、可操作性和人性化程度
前言
笔者从学校做兼职到工作这些年已经开发了或者参与开发了十多套后台管理系统(后面简称BMS),而使用过的BMS就不计其数了。多数情况下,BMS主要面对的用户是公司内部人员,为了节约人力成本,BMS的开发通常没有前端工程师参与,或者前端工程师简单参与,这样就直接导致了BMS的易用性、可操作性和人性化程度都惨不忍睹,反正是自己人用嘛,凑合就行了。但是谁不希望自己做出来的系统能得到大家的肯定呢?然而现实往往是残忍的,工期在后面追着呢。在以下内容中,笔者根据多年经验总结,谈谈如何在保证进度的前提下,提高BMS的易用性、可操作性和人性化程度。由于篇幅原因,简单说说实现的原理,也算是抛砖引玉,让大家少走弯路。
开始
1、选一套美观、大气、易用、可扩展性高的模板
放在第一条写是因为这条太重要了,这条走错,就只能一错到底,因为项目到中后期要更换模板是不可能 的。笔者曾经接手一套BMS,界面丑陋、漏洞百出,封装得特别死,想自己扩展功能非常麻烦,最奇葩的是,所有页面都是在主页通过在新的Tab标签里追加DOM方式打开,更多的就不说了,吐槽要适可而止。笔者推荐基于Bootstrap 3 的Metronic或者AdminLTE2,通过适当精简,很快就可以搭建一套优秀BMS前端框架。
2、列表页面
BMS的列表页面基本上是三种形式:
(1)分页列表:推荐 Bootstrap Table插件(http://bootstrap-table.wenzhixin.net.cn/),笔者进行了适当的扩展,可参考http://blog.csdn.net/lhtzbj12/article/details/77170489 ,结合官方提供的插件(http://bootstrap-table.wenzhixin.net.cn/extensions/)可以轻易的实现自定义排序、显示/隐藏列、保持分页参数等功能。
(2)树形列表:推荐jquery-treetable插件(http://ludo.cubicphuse.nl/jquery-treetable/), 原皮肤挺丑的,删除一部分css后,就会使用Bootstrap表格样式。
(3)表单页面:采用ajaxfileupload在提交表单前就将文件(图片)上传并做格式验证,笔者对这个插件进行了修改,解决了BUG ,可参考http://blog.csdn.net/lhtzbj12/article/details/76407956;使用jquery.validate进行验证;统一用ajax进行提交,可参考http://blog.csdn.net/lhtzbj12/article/details/65442537;简单表单页面在父页中弹出,复杂的表单页面跳走(后面内容会提到如何保持父页面状态)
3、弹出层
告别alert吧!推荐使用Layer(http://layer.layui.com/),你想要的效果,它基本上都可以满足,而且可以扩展皮肤,以便于与已有的模板风格保持一致。为了统一效果,每次弹出层都从第一层页面弹出,即在弹出的页面里再次弹出时,使用parent.layer.open,这两个弹出层之间是可以进行数据传递的。
4、下拉菜单
推荐使用 Bootstrap-select(http://silviomoreto.github.io/bootstrap-select/),与Bootstrap兼容得最好的下拉菜单插件。
5、页面状态保持
简单点说,就是用户彻底离开某页面(关掉浏览器)后,再回到这个页面时仍然保存着离开的样子,下面只是解析实现原理,具休实现需要根据实现情况,笔者在实际项目中都简单封装成插件,使用起来特别简单。
(1)分页列表:如果使用了Boostraptable就可以官方的cookie插件实现将当前页数、分页显示数量、显示/隐藏列等保存至cookie,这个插件是有BUG,笔者已经修复
(2)树形列表:在展开、收缩事件里将展开的id保存至cookie,页面加载,从cookie读取,将相应的节点展开
(3)滚动条位置:刷新前或者离开前将滚动条位置保存至cookie,页面加载时,从cookie读取并滚动到相应位置
(4)搜索条件:一般都放到一个form表单,点击搜索按钮时将所有条件保存至cookie,打开页面时获取并附值
(5)复杂交互界面:打开页面时将数据整体读取保存到前端页面,所有对数据的操作都在前端进行,每次在更改数据时,都将更改后的数据保存到localStorage里,最终保存时再保存到服务器。如果未保存到服务器端就离开页面然后返回页面时,从localStorage里读取数据,询问用户是否继续编辑,笔者简单封装了插件,便于对localStorage进行操作,可参考http://blog.csdn.net/lhtzbj12/article/details/78277436
6、高亮提示
在列表页,编辑某条数据结束后,刷新列表时,改变被编辑数据Dom元素的背景颜色,并闪动若干次,如果因为调整了排序导致数据跳到了可视区域外,则设置滚动条位置,使其出现在可以区域内
7、长时间任务进度显示
涉及到导入数据等操作时往往需要很长时间,来一个loading层显然不是最好的方式,笔者采用多线程+AJAX+Redis,将任务状态保存在Redis里,实现适时进度显示,并且,离开页面后再回到页面,进度条继续显示,进行中时,可以进行暂停、继续、停止,实现步骤如下:
(1)前端:页面打开时,ajax请求,获取Redis里的任务状态,任务状态如果是“进行中”,则禁用【导入】按钮(不让开始新的任务),设置setTimeout,每隔2s再次请求;如果是“空闲”,则隐藏进度条,显示【导入】按钮;
(2)点击【导入】按钮发出请求;服务器端开启新线程进行导入任务,循环读取数据,每一轮循环结束后,更新任务进度;前端每隔2s ajax请求任务进度,更新进度条;
(3)任务循环进行中,点击【暂停】,Redis里任务状态更新为“暂停”,循环里发现状态为“暂停”则在子循环里反复获取任务状态,如果为“暂停”则继续子循环,如果为“进行中”或者“停止”(点击【继续】、【停止】更新Redis里的任务状态),则跳出子循环;
(4)循环里出现异常时将任务状态更新为“意外中断”,前端发现任务中断后,显示【强制关闭】按钮,点击【强制关闭】后将任务状态设置为“停止”;
(5)大循环结束后,判断是否因为【停止】而结束循环,不是则将任务状态更新为“完成”;
(6)前端发现状态为“停止”或者“完成”,显示“停止”或者“完成”的状态3秒后,ajax请求,将任务状态更新为“空闲”。
补充:这里的前端进度实时显示最好是用websocket实现,但是受浏览器、服务器等条件限制,笔者将进度状态保存至redis,ajax请求任务状态时从redis获取。
总结
暂时写到这里,将来有时间的话将里面的插件和难点详细介绍。
简单谈谈如何提高后台管理系统的易用性、可操作性和人性化程度相关推荐
- 一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目地址)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:huanzi-qch cnblogs.com/huanzi- ...
- ajaxfileupload 访问不到后台_一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目地址)...
前言 这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理.菜单管理.用户管理,系统设置.实时日志,实时监控,API加密,以及登录用户修改密码.配置个性菜单等 技术栈 前端:la ...
- c# 基于layui的通用后台管理系统_简单通用的Java后台管理系统
前言 这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理.菜单管理.用户管理,系统设置.实时日志,实时监控,API加密,以及登录用户修改密码.配置个性菜单等 技术栈 前端:la ...
- 一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目源码)
前言 这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理.菜单管理.用户管理,系统设置.实时日志,实时监控,API加密,以及登录用户修改密码.配置个性菜单等 技术栈 前端:la ...
- 简单的php 后台管理系统,GitHub - luohuam/LP-ADMIN: 附带简单PHP框架的后台管理系统模板,适合新手...
LP-ADMIN 一.目录结构 lpAdmin └───application | └─── config | └─── config.php ----------------------数据库配置 ...
- 最棒的 7 个 Laravel admin 后台管理系统推荐 - 卡拉云
本文完整版:<最棒的 7 个 Laravel admin 后台管理系统推荐> 目录 Laravel admin 后台管理系按类型选择 脚手架型 CRUD 接口型 可视化编程 新一代低代码开 ...
- 基于ThinkPHP框架的简单的后台管理系统
基于ThinkPHP框架的简单的后台管理系统 一个简单的后台管理系统,可能还不全面,可以自己改,有登录功能 实例如图:
- 后台管理系统简单实现总结
后台管理系统,简单来说就是对各种数据进行维护的一个平台或者说是CRUD也行.因为涉及到数据,所以保护数据安全就显得尤为重要.下面就来简单介绍下我之前做的一个后台管理系统的实现过程中遇到的问题及关键点做 ...
- 一个简单的后台管理系统
一个简单的后台管理系统(1.0) 使用须知 一.数据库 1.1关于数据库的设计(重点) 1.2具体表设计 1.2.1角色表 1.2.2用户表 二.前端 1.关于需要注意的地方 2.新增注册页面 三.后 ...
最新文章
- 2022-2028年中国降解塑料聚酯行业运行动态及投资机会分析报告
- python图片二进制流转换成图片_微信如何将图片转换成word文字
- 8.QML Qt Quick Controls 2中常用的界面形式——堆叠式界面(StackView)
- cf1453B. Suffix Operations
- Leetcode 904.水果成蓝(滑动窗口,哈希容器map
- 【BZOJ2844】albus就是要第一个出场,线性基
- 开始把一些东西放到博客上
- Magnet for mac(窗口布局辅助工具)
- 漫谈Linux标准的文件系统(Ext2/Ext3/Ext4)
- Unit1 Homework
- shell脚本学习指南_Shell脚本初学者指南:基础知识
- webrtc 共享屏幕延时测试
- 前端下载音频的两种处理方式
- Arduino 系列传感器应用
- 使用鼠标右击Gite Bash Here 将本地文件上传到 GitHub
- 【示波器专题】示波器探头的原理深入——有源探头之电流探头
- 公司董事会人数怎么确定
- CSS实例——梦幻西游
- 异步多线程之入门必知
- 不同等级的UI设计师工作内容有什么区别?