web系统中后台管理几乎是必不可少的一个功能,因此无论是纯UI页面的后台,还是一些开源cms系统的后台功能,或是一些后台系统的开源基础脚手架等等,我认为都还是有一定的需求和价值的。
但是在后台管理功能的开发过程中,有许多重复的工作,以开发后台一个友情链接的功能为例:
1、首先得建一个友情链接的表吧,设计字段类型、设置字段长度、主键、默认值等等这些工作。
2、其次得有个列表页面显示所有的友情链接,列表页还得有查询和分页的功能
3、要可以新增、编辑和查看某个友情链接,开发对应的功能和页面,要可以上传图片、编辑富文本等
4、新增和编辑时得有校验,不合格的数据不入库
5、单个删除和批量删除
如何最大程度的简化这个流程,消除重复的劳动,提高开发效果呢?实际上很关键的一点是什么呢,后台不同于前台,用户对于页面设计的要求相对低一些,因为主要是操作功能,只要页面简洁一致,功能流畅好用即可,因此可采用统一的页面模板。基于这种理念,我提出了这样一个方案和实践:
1、建友情链接的表,设计好表结构和字段,如这里的tjpcms_yqlj
2、new一个crud类的实例,根据业务需求,配置查询区(cxq),按钮区(anq),表体区(btq),操作区(czq),aev区(add,edit,view)
具体的代码如下:
这样就完成了友情链接的页面及功能,访问yqlj的映射地址,因为返回的是adm/list,因此打开了list页面
通过代码中对crud对象的配置,即动态完成了友情链接的所有页面和功能,并且可以即时修改,即时生效,如在查询区增加对网址的查询,那么只要在cxq中增加一项即可,保存后刷新页面,在列表页的查询区即增加了对网址的查询功能。再比如编辑友情链接需要增加一个备注字段,那么只要在tjpcms_yqlj表中增加一个备注字段,并在代码中的aev中增加一项,保存后刷新页面,页面中即多了一项备注可以保存。做到了实时修改,实时生效。
再比如,我现在需要做一个新增和查看图文教程的功能,采用这种方法,如何实现呢:
可以看到,友情链接和图文教程这两个功能,页面设计都是同一套模板,不必重复编写,也就是说页面不需要每次都写代码,而新增,保存,删除等功能,使用的也是crud自带的,则开发者只需要写crud的定义及配置查询区,表体区等等,即完成了crud的所有功能和页面, 极大的减少了重复劳动,同时又极大的增加了cms系统的灵活性。