首页 > 其他分享 >【总结】前端业务组件库怎么样做到极致?

【总结】前端业务组件库怎么样做到极致?

时间:2022-10-21 14:32:05浏览次数:55  
标签:需要 架构 前端 业务 文档 极致 组件 代码

【总结】前端业务组件库怎么样做到极致?_移动端


对于前端同学来说, 业务组件库肯定不陌生,很多前端团队都会选择建设业务组件库来解决

  1. 业务组件跨项目复用的问题
  2. 同时统一代码实现,统一代码质量

从而提高业务的开发效率。但是我发现埋在明确需求之后,开始调研技术方案时,很多同学并不清楚要调研哪些技术点,怎么找到某个具体方向的解决方案,找到方案之后都需要试哪些case, 以及怎么把这些方案集成在一起等等。

其实不用想那么复杂,你只需要按照以下三个技术实现的关键点搞定就可以了。

  • 第一步:"搭地基"--业务组件库的整体架构设计
  • 第二步:"建主体结构"--业务组件库的基础技术设计
  • 第三步:"粉刷外立面"-- 业务组件库的对外文档服务

你一定觉得这三个点还是太宏观了,不好理解,所以接下来,我就分别介绍这三个关键点到底是什么。你可以参考这些关键点来进行相关技术调研

​一. 业务组件库的整体架构设计​

对于业务组件库的整体架构设计而言,核心问题是业务组件库的代码时如何来组织和管理

首先,我们把代码仓库建好。业界一般会把同一类组件库用单个仓库的形式维护,并且把组件开发成NPM包的形式,这里的重点是,**你要考虑把所有的组件打包成一个大的NPM包,还是分割是一个个独立的小NPM包 。**不要小看这个问题, 这两种选择会使仓库的目录结构有不小的差异,进一步又会影响到后面组件的开发,构建,发布,实现的技术设计

单包架构

是什么

如果你选择把所有的组件看成一个整体,一起打包发布。这叫做单包架构。单个仓库,单个包,统一维护统一管理。比如Antd

【总结】前端业务组件库怎么样做到极致?_移动端_02000.jpg

优点

它最大的优点是可以通过相对路径实现组件与组件的引用,公共代码之间的引用。

缺点

缺点就是组件完全耦合在了一起,必须把它作为一个整体统一发包。就算只改一个组件的一个非常小的功能,都要对整个包发布更新。


比如说 Antd,它就是作为一个整体的包来尽进行管理的。选择使用单包架构的话,那么你就必须提供按需加载的能力,以降低使用者的成本,你可以考虑支持 ES Modules 的 Tree shaking 的功能来实现按需加载的能力。当然你也可以选择另外一种方案,叫做"多包架构"

多包架构

是什么

每个组件彼此独立,单独打包发布,单个仓库多个包,统一维护单独管理。

 .
├── lerna.json
├── package.json
└── packages/ # 这里将存放所有子 repo 目录
├── project_1/ # 组件1的包
│ ├── index.js
│ ├── node_modules/
│ └── package.json
├── project_2/ # 组件2的包
│ ├── index.js
│ ├── node_module/
│ └── package.json
...

复制代码

优点

它最大的优势是组件发布灵活,并且天然支持按需使用,

缺点

缺点就是组件与组件之间物理隔离。对于相互依赖,公共代码抽象等场景,就只能通过NPM包引用的方式来实现。

--

在这些场景下的开发统一发布,相对来说没那么方便,多包架构在业界称之为 "Monorepo".

【总结】前端业务组件库怎么样做到极致?_依赖包_03阿萨德阿斯蒂芬斯蒂芬.jpg

在前端领域,我们一般使用第三方库 Lerna 来维护这样的架构,Lerna针对包之间有依赖的场景做了一些特殊优化,开发模式下,它会把所有存在依赖关系的包通过软链的形式连在一起,就可以很方便的本地开发联调。所以这就要求你考虑清楚,

  • 组件库之间的组件是否有相互依赖的情况,如果有这种情况,就可以通过Lerna来进行处理
  • 如果组件之间依赖特别验证,也可选择"单包架构"

​二. 业务组件库的基础技术能力​

当你确定了整体架构之后,就可以开始具体的功能点实现了。业务组件库要求整体框架提供五点基础的技术能力

1. 构建能力

这需要我们可以提供构建产物的能力,这里有很多选择,可以选择Webpack,Rollup Glup Grunt..... 构建组件库推荐Rollup, 构建项目推荐Webpack. 这里需要特别注意产物的格式要求,像我们常用的cjs, esm,umd格式。

  • 比如说如果你的组件考虑支持 node环境, 像需要支持ssr, 你就需要打包出 cjs格式的代码
  • 如果你的组件考虑支持​​<script >​​ 标签引用,, 你就需要打包出 umd格式的代码

然后就需要在对应的构建工具里进行配置

除此之外,还有几个非常容易遗漏的点,比如说

  • 组件库Bable的配置是否与项目中Babel的配置重复
  • 依赖包是打包到产物中,还是使用项目中的依赖包。如:lodash, moment...
  • 依赖包的样式是否打包到产物中以及Polyfill的配置(这里以后再开一篇详细说明吧

    标签:需要,架构,前端,业务,文档,极致,组件,代码
    From: https://blog.51cto.com/u_11887782/5782737

相关文章

  • ant.design-vue 级联多选组件
    取自doit-ui-web ,基于ant.design封装的功能组件,实现多选级联样式表功能,根据自身情况引入到自己的项目中 <template><divclass="gb-ant-select-multiple-c......
  • APICloud AVM框架 数字滚动组件
    AVM(Application-View-Model)前端组件化开发模式基于标准WebComponents组件化思想,提供包含虚拟DOM和Runtime的编程框架avm.js以及多端统一编译工具,完全兼容WebComponents标......
  • 前端开发解决跨域问题
    跨域问题很常见了,常见的代码层解决方案也很多:如: https://blog.csdn.net/zh0623/article/details/123739455。今天要介绍的是通过浏览器配置的方式快速解决跨域问题,实现......
  • 实战篇之前端开发时,突破文字最小限制
    实战篇之前端开发时,突破文字最小限制大家好,我是小简,今天遇到一个需求,如下。最小限制?我们来看这样一个页面,此时我在PC端时,我p标签中字体大小是12px,那我们在做移动端响应......
  • 父组件为子组件传递数据(静态数据)
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-e......
  • 界面组件Telerik WinForm R3 2022,让应用启动变得更酷炫
    TelerikUIforWinForms拥有适用WindowsForms的110多个令人惊叹的UI控件。所有的UIforWinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用......
  • 界面组件DevExpress WinForms v22.1新版亮点 - 支持High-DPI
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office......
  • Blazor组件自做十 : 光学字符识别 OCR 组件
    光学字符识别OCR组件演示地址https://blazor.app1.es/ocr使用方法手机或者电脑点击拍照OCR可启动相机拍照,或者点击文件OCR选择文件,稍等片刻即可获得OCR结果.......
  • Blazor组件自做十一 : File System Access 文件系统访问 组件
    BlazorFileSystemAccess文件系统访问组件Web应用程序与用户本地设备上的文件进行交互FileSystemAccessAPI(以前称为NativeFileSystemAPI,在此之前称为Writea......
  • 【性能优化】前端性能优化
    背景我们经常提到要创建高性能的前端,高性能的前端有哪些需要我们注意的能请求图片样式多,文件压缩和分割,工具算法靠策略,事件委托位操作。解释请求:减少请求数量,控制返......