基于CMS的组件复用实践

目前前端项目大多基于Vue、React、Angular等框架来实现,这一类框架都有一个明显的特色:基于模块化以及组件化思惟。因此,开发者在使用上述框架时,其实是在写一个一个的组件,而且组件与组件之间呈嵌套的形式。当一个项目中屡次出现同一功能时,他们会选择将其提取出来,而且放到components文件夹中,以达到复用的目的,可是这些复用都是基于同一项目的,因此,当写另外一个项目时,又要开始写一些重复的代码。前端

个推拥有多条业务线,在进行前端项目时总会遇到重复写代码的困境,因此,咱们作了PCMS项目,主要为了解决跨项目之间的组件复用问题,其中的技术栈是基于Vue的,因此PCMS同时也是基于Vue项目实现的。 vue

接下来我将基于本身在前端工做过程当中的实践,跟你们分享基于CMS的组件复用实践。webpack

想要实现跨项目之间的组件复用,须要解决如下问题,
1.组件与组件之间,组件与项目之间须要解耦
2.组件须要给出使用方法(文档)
3.组件须要可以独立运行
4.组件须要有版本管理而且能够按需加载
5.须要一个工具把这些组件管理而且展现出来web

在上述五大问题中,首先要解决组件与组件以及项目之间的解耦问题,为此,咱们须要将组件内部和其它组件以及项目耦合的部分剔除,而后经过props传入,为了方便区分这些props与普通props,咱们把他们放到了一个名为ds的对象中 。一般,这些耦合部分会是一些API或VUEX调用或者前端路由操做等。框架

同时, 为了方便这些组件的编写和维护,咱们给组件制定了更加严格的约束,同时将这些符合约束的复用组件称为“区块”,意思是能够独立于项目的一个功能区域。模块化

在解耦过程当中,咱们发现这些区块的代码能够有一些重复部分,好比ds的一些优化和mock的注册等,因此咱们开发了一个vue插件。在项目使用区块时,为了完成按需加载时的引用方式以及生产环境下Mock数据的剔除,咱们又开发了一个webpack插件。工具

在具体实践过程当中,为了实现组件的复用,须要按照固定的结构去写组件,还须要在项目中修改main.js和webpack配置工做,因此,咱们开发了CLI工具和GUI工具来生成项目和组件基本文件,同时管理和调试组件。组件化

完成了CLI和GUI工具以后,具体的开发流程以下所示:学习

1. 使用CLI生成项目
 2. 开发页面
 3. 从GUI工具查找合适的区块,直接使用或者下载代码微调
 4. 页面开发完成
 5. 对于可复用的功能,使用CLI生成区块基本文件,进行区块开发
 6. 开发完毕,项目上线发布区块库
 7. 下一次开发项目时,能够直接使用该区块或者下载代码

使用了区块的开发模式后,虽然开发流程与以前相比并无太大区别,但有效提高了开发的速度,同时还能将任务拆分得更细,对于团队中的初学者来讲,一个有使用文档的业务组件更加容易被他们接受,对于业务的上手速度也更快。优化

本文根据个推高级前端开发工程师沈创在个推TechDay全国巡回沙龙广州站的演讲内容进行整理,略有删减。接下来,个推TechDay全国沙龙还将走进成都、杭州、上海、深圳几大城市,邀请业内技术大咖跟你们一块儿交流学习,敬请期待!

相关文章
相关标签/搜索