赞
踩
本文是一个系列文章,谈谈如何降低应用的复杂度,增加可维护性。
文章里面提供的是一种思路,并根据此思路进行实现,将遇到的问题进行解决。
随着用户体量的增加,功能会越来越多,系统会越来越庞大,基于后端的微服务越来越大火,前端层面更多的关注vue,react之类的框架上,
他们解决的是视图和数据的分离,但业务层面的框架或者思想的分享则不多,毕竟偏离了技术的路线。
类似与微信与小程序,浏览器与扩展,或者操作系统与应用程序之间的关系,都是面向开发者的服务(如果客户没有开发能力,也可以根据情况由我方开发者开发)
根据我们自身业务系统的特性,找到我们系统本身独特的,核心的业务性的东西,以此为主线,将各个业务模块或者通用服务抽离。
上面讲的有些抽象,让我们来举几个具体的例子。
假如我们的系统是iconfont.cn
需求: 我的职业是写PPT,每天会高频词找图标放入PPT,它只有复制svg的功能,没有直接复制图片的功能,我不想每次都下载PNG,
我期望有个复制图片的功能,类似于下图
代码方案设计,以下为伪代码,实际生产环境不会这样写,但这不重要,在此,只是提供一种思路给大家。
new Function()
,后续文章我会详细说明如何设计)我们打包后的部分代码片段如下
//我们系统的基础功能
const btnGroup=[{
name:"SAG 下载",
fn(){}
}];
通过接口获取到的代码片段(此代码片段由用户或管理员上传至我方数据库,并经过接口返回至客户端)
//动态扩展,用户自己上传或者我们分配的扩展
btnGroup.push({
name:"复制 PNG",
fn(){/*具体的实现*/}
})
结束,完成一个简单的功能。
好处肯定大于坏处,谁用谁知道,我经过实测,效果极佳。
基于web/h5应用的插件/扩展/业务剥离方案设计(第二篇 ECMA5.1方案)
结束语:欢迎在评论区交流,如果觉得不错,可以点赞和收藏,持续更新。
博客中标注原创的文章,版权归原作者 苦中作乐才是人生巅峰所有;转载或者引用本文内容请注明来源及原作者;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。