前端通用组件设计

author author     2023-04-24     500

关键词:

参考技术A

调用组件库的API相信很多人都会用,但是如何封装一个高复用的组件并不是每个人都能做到,而这也是检验一个前端开发人员的一个标准。

说到开发组件,首先需要考虑一个问题,一个可复用的组件都需要具备哪些必要条件。

1. 细粒度考量
看过设计模式的朋友应该有了解过很多设计原则,其中一个就是 单一职责原则 ,这个原则放在开发组件中也同样适用。在原则上一个组件就只负责一件事,这就是单一原则所带来的好处也非常明显,就是可以更大可能的复用组件。但如果职责过于单一,也会造成组件碎片化严重,过于抽象。

因此我们需要考虑,所谓的单一职责原则是建立在可复用的基础上的。否则,可以做为独立组件的内部组件进行使用。

2. 组件通用性考量
组件设计之初是为了当时的页面设计进行封装设计的,那么之后的页面设计极大可能是与之前不同的,那么之前设计的组件就不能用了。

而一旦发生这样的情况,就说明我们之前所设计的组件是不通用的,需要重新设计了。就像Antd组件库那样,预留了dropdownRender进行组件渲染。

通用性的设计就代表着将放弃对DOM的操作权,暴露给开发者进行操作,组件开发者本身只负责底层逻辑和基本的DOM结构。这也是开发通用型组件的秘诀之一。

3. 技术选型
css存在着许多的弊端,例如样式易冲突(没有作用域的概念)、书写繁琐(不支持嵌套)、缺少变量(不便于一件更换主题)等等。而解决这些问题的方案也是层出不穷,从最早的css预处理,到后来的Postcss,再到后来的styled-compontent,各种方式任君选择。

4. 打包工具
产品的设计思想固然是核心,但是也需要一堆辅助工具来来帮助我们开发,例如编译工具、测试工具、打包工具。

说到打包工具,就不得不提一下如今非常火爆的,需要配置工程师专门配置的webpack了。但是他也有一个强大的竞争对手 rollup。

rollup更适合用于组件库的打包,优势如下:

设计一个轮播图组件
学以致用,学了就肯定要实践一下。轮播图是一个比较常见的组件,每个组件库中都封装的有,接下来我们也来介绍一下如何设计一个轮播图组件。

1. 轮播图原理
通常情况下我们使用轮播图是这样编写的

那么为什么放入了四个div盒子却只显示一个呢,这是因为可视区域是固定的,只需要移动div盒子就可以显示出后面的盒子,这样就达到了轮播的效果。

为了是观看效果更好,我们都会隐藏掉可视区域之外的内容,这样就是大家经常看到的轮播图了。组件就可以这样设计:

可以通过transform: translateX()不断改变SlideList的位置,就可以达到轮播的效果了。

2. 轮播图的基础实现
知道了基础原理就可以进行组件的实现了,这里以移动端轮播图为例。

首先,获取移动端可视窗口的宽度。

------- 未完待续 --------

vue2.0的通用组件

...用组件库的开发之路Element是由饿了么UED设计、饿了么大前端开发的一套基于Vue2.0的桌面端组件库。今天我们要分享的就是开发Element的一些心得。官网:http://element.eleme.io/#/github:https://github.com/ElemeFE/element ##设计目的大部分... 查看详情

前端项目目录如何组织

参考技术A最近看了antdpro发现其项目的目录结构组织的不错。然后再按照自己的项目经验,对其项目的组织进行修改,现在总结下自己的想法。我们看下antdpro自己生成的目录结构由于antdpro本身引用了antd的组件库,所以不存在自... 查看详情

如何管理微服务上的通用前端组件

】如何管理微服务上的通用前端组件【英文标题】:Howtomanagecommonfrontendcomponentsonmicroservices【发布时间】:2017-04-2316:48:07【问题描述】:如何管理微服务的前端,尤其是当您拥有通用组件时?我在互联网上找到了一些解决方案,... 查看详情

openstack通用设计思路-每天5分钟玩转openstack(25)

API前端服务每个OpenStack组件可能包含若干子服务,其中必定有一个API服务负责接收客户请求。以Nova为例,nova-api作为Nova组件对外的唯一窗口,向客户暴露Nova能够提供的功能。当客户需要执行虚机相关的操作,能... 查看详情

vue实现通用导出(excel,csv,pdf文件)组件前端导出

后台管理项目中经常使用文件导入导出,故封装了一个通用table的导出组件的实现 思路使用 Dropdown控件选择导出类型触发导出tableColumns:[{title:‘序号‘,key:‘Ordinal‘,align:‘center‘},{title:‘产品编号‘,key:‘ProductNo‘,align:... 查看详情

饿了么基于vue2.0的通用组件开发之路(分享会记录)

...用组件库的开发之路Element是由饿了么UED设计、饿了么大前端开发的一套基于Vue2.0的桌面端组件库。今天我们要分享的就是开发Element的一些心得。官网:http://element.eleme.io/#/github:https://github.com/ElemeFE/element ##设计目的大部分... 查看详情

源码时代前端干货分享|从零动手封装一个通用的vue按钮组件

我们在使用目前最主流的前端框架vue在开发过程中,组件是一个非常重要的组成部分,可以这么说,所有的vue应用,都是由一个一个的小组件拼装而成的。正是由于vue组件如此重要,所以vue的生态中,也非常多的UI组件库,其中... 查看详情

前端开发规范-css规范

前端开发规范-CSS规范1.通用约定(1)代码组织以组件为单位组织代码段;制定一致的注释规范;组件块和子组件块以及声明块之间使用一空行分隔,子组件块之间三空行分隔;如果使用了多个CSS文件,将其按照组件而非页面的... 查看详情

汽车之家unity前端通用架构升级实践

随着之家3D虚拟化需求的增加,各产品线使用Unity引擎的项目也越来越多,新老项目共存,代码维护成本也随之增加。代码质量参差加之代码规范仍没有完全统一产生高昂学习成本进一步加重了项目维护负担。为应对这些问题,... 查看详情

前端vue+elementui案例:通用后台管理系统-header+导航栏折叠(代码片段)

...der.vuestore的index.jsstore的tab.js效果参考目标上一篇:【前端】Vue+ElementUI案例:通用后台管理系统-导航栏代码0.创建组件创建组件CommonHeader 查看详情

前端vue+elementui案例:通用后台管理系统-home组件:卡片表格(代码片段)

文章目录目标代码0.布局1.左上User卡片2.左下table卡片2.1数据:TableData.js2.2table2.3代码优化:循环3.右上数据卡片3.1数据:CountData3.2结构3.3布局3.4样式总代码Home.vue参考目标红框内部分都是卡片,鼠标悬停会有阴影左... 查看详情

e8前端相关知识点(代码片段)

E8前端标签积累收集页面通用标签引入标准jsp标签页引入产品标准功能代码铺助脚本控件浏览按钮布局控件必填校验下拉组件编辑表格与分页表格报表弹出框组件右键菜单weaverTree树形组件日期控件开关组件菜单的点击事件页面通... 查看详情

springboot通用返回类设计

在项目中通常需要为前端设计通过的返回类,返回的格式为:{"status":"success","data":{...}}定义通过返回类:CommonReturnType/***通用返回结果类*包含请求结果status:"success"or"failed"*包含请求数据data:{}*/publicclassCommonReturnType{//表明对应请求... 查看详情

android屏幕适配屏幕适配通用解决方案④(自定义组件解决方案|计算设计稿与实际布局的比例系数)(代码片段)

...度声明受限屏幕支持在博客【Android屏幕适配】屏幕适配通用解决方案②(自定义组件解决方案|需要解决的问题:设计稿坐标数据转为屏幕真实坐标数据|实现步骤)中,提出如果要实现将宽高为720x1232的设计稿,对应手机屏幕中除状态... 查看详情

android屏幕适配屏幕适配通用解决方案④(自定义组件解决方案|计算设计稿与实际布局的比例系数)(代码片段)

...度声明受限屏幕支持在博客【Android屏幕适配】屏幕适配通用解决方案②(自定义组件解决方案|需要解决的问题:设计稿坐标数据转为屏幕真实坐标数据|实现步骤)中,提出如果要实现将宽高为720x1232的设计稿,对应手机屏幕中除状态... 查看详情

前端组件化框架之路

...面提高了开发效率,另一方面降低了维护成本。但是在Web前端这个领域,并没有很通用的组件模式,因为缺少一个大家都能认同的实现方式,所以很多框架/库都实现了自己的组件化方式。前端圈最热衷于造轮子了,没有哪个别... 查看详情

产品设计流程与文档规范

最近项目中遇到了需求、UE、UI到前端工作衔接不顺畅的问题:前端设计之前到底需求需要分析到哪一层?哪些文档就可以支持前端设计?这些文档的结构和规范都是什么样的?以及,前端设计到什么程度就可以进入开发阶段?... 查看详情

android屏幕适配屏幕适配通用解决方案⑤(自定义组件解决方案|自定义viewgroup组件onmeasure方法中计算每个子组件坐标数据|自定义组件完整代码)(代码片段)

...度声明受限屏幕支持在博客【Android屏幕适配】屏幕适配通用解决方案②(自定义组件解决方案|需要解决的问题:设计稿坐标数据转为屏幕真实坐标数据|实现步骤)中,提出如果要实现将宽高为720x1232的设计稿,对应手机屏幕中除状态... 查看详情