实际工作中关于require.context方法的应用!!!
背景:
关于在业务中思考如何把技术运用到实际业务中,从而提高开发效率,节省开发时间!
正文: 由于业务当中的相同点太多,很多代码都需要重复使用,如何做到只需要开发一次就能多处复用?
其实更多的是表单和input控件的应用,首先封装好表单控件,这里用到了vant中的表单控件,进行了二次封装。
首先想到的是接口配置化,就是根据后端接口返回的字段来动态渲染表单控件!
第一版本:一开始自己想到的是用继承的方法来做,就是定义一个基类,把相同字段全部抽离放在基类上,然后各个组件继承这个基类,这样的话 我只需要关注每个组件的不同点,无需关注相同点部分,只需调用基类方法即可,但是这样做每次对接新的渠道还是要手动去开发代码,不能做到可配置化,虽然减少了一定的代码开发量但是还是不够智能,需要进一步优化!
第二版本:于是开始着手进行优化,同样的配置字段去后台读取接口,还是写了一个基类,把当前需要的所有字段和表单控件,全部定义在基类上,这样的话通过单独的函数返回表单元素,渲染在页面上,然后通过策略模式去匹配,然后根据后端返回的数组配置项进行动态渲染页面,这样的话,就能完全根据后端进行的配置,返回对应的表单控件,在现有字段情况下,无需前端代码开发,只需要后端接口配置相应的字段,前端页面就能动态渲染对应的表单控件,达到了现有配置项的智能化!但是由于所有的表单控件函数是定义在基类上,这样后期如果维护或者拓展的时候,不利于维护和拓展,这样还是需要进行深度优化!
第三版本:首先第二个版本大致上实现了制动配置的功能,但是具体细节还是需要斟酌,这里主要是把基类上的函数统一拆分,然后通过组件的方式去分别实现,不需要在定义基类,只需要开发相应的组件即可!这里用到了一个知识点,以前没用过的require.context方法,具体用法可以自行查阅相关文档,这里主要是用来一次性动态引入所有的文件,前提是指定相应的文件夹,把每个表单开发成单独的组件去维护,这样不会对其它控件造成一定的影响,动态引入所有文件后,然后通过策略模式动态匹配,根据key:vue这种方式进行匹配,然后在主文件进行渲染的时候,只需要传入相应的字段,动态匹配渲染表单控件即可!这样的话,就无需担心我改一个文件会不会造成对其它文件的影响,每个文件只单独做自己的事情!