随着vue/react这类以数据驱动为主的web框架的不断完善和壮大,越来越多的前端团队开始着手搭建内部的组件库。虽然目前市面上已经有很多功能强大且完善的组件库供我们使用,比如基于react的开源组件库ant-design,material,又比如基于vue的开源组件库elementUI,iView等。
我们在开发管理系统或者中台产品时,完全可以使用这种第三方库来开发,因为首先其服务的用户群体比较小众,一般是企业或者运营人员来使用,重点在于功能和业务,所以在B端产品比较适合;另一点就是设计要求相对于C端产品会低一些,因为B端产品或者管理系统风格统一简单反而会降低使用者的学习成本。所以对于上述情况,我们完全可以使用ant-design-pro或者element-admin-vue这类集成管理框架开开发。
我们使用第三方组件库搭建一个企业级应用是完全没有问题的,但是另一方面,随着我们对用户体验以及网站性能的要求越来越高,流量及金钱,速度即王道,对于专注于做C端的企业来说,尽可能的减少用户等待才能留住更多的用户,比如我们在某宝,某东上买一个商品,结果我们花了一分钟商品列表还没有出来(形容的有点夸张),这种情况下客户可有可能直接选择某拼了。很明显像ant-design和elementUI这样的组件不适合做C端产品,因为体积太大了,除非用高性能服务器或者其他方式弥补。所以说采用轻量级组件库对于C端项目来说有以下几点好处:
打包体积小,高度可控
采用内部组件库安全性更高,防止嵌入攻击
构建和开发更灵活,且组合型更高
但是开发组件库还是需要投入时间和成本的,毕竟这东西不是每个团队都玩的起的。说了这么多,接下来我们就来分析和实现一个团队内部的组件库吧。
你将收获
如何从0搭建一个组件库
前端组件系统设计思路和模式
组件库的划分及设计思路
组件库的package.json文件配置说明
将组件库部署到github并发布到npm上
正文
- 开发组件库的几种方式
目前我们开发组件库的方式有很多,只要根据npm发包原则去配置就好了,我们可以用webpack自己大家一个library,也可以直接使用create-react-app/vue-cli3来快速改造一个组件库的脚手架,或者采用之前比较火且自动集成tree-shaking的rollup,这些方式都可以搭建我们组件库的脚手架。关于如何使用webpack4.0和rollup,可以参考笔者的以下几篇文章:
前端组件/库打包利器rollup使用与配置实战
基于create-react-app打包编译自己的第三方UI组件库并发布到npm
用 webpack 4.0 撸单页/多页脚手架 (jquery, react, vue, typescript)
其实还有一种最快的方式就是直接去ant-design或者elementUI的github仓库,把代码copy下来改成自己的组件库脚手架,当然,这也不是随便就能改好的,如果想尝试这种方案,建议大家先学好typescript和webpack。
笔者这里采用的是目前比较流行的工具链umi,umi的father专门是提供组件库或者工具库打包的集成工具,我们只需要更改配置文件就能轻松搭建一款自带说明文档的组件库。笔者接下来会具来教大家如何使用它。
2. 前端组件系统设计思路和模式
以上是笔者画的一个简陋的分层图,我们可以看到最底层的是我们的基础视图组件,它是上层建筑的基石。对于一个包含很多子系统的复杂的项目系统来说,要想设计一个好的架构,第一步就