对 Element Ui 、Ant Design 二次封装的优点是什么?

2019-10-08 17:25:13 +08:00
 hoythan

很多人喜欢对 UI 框架进行二次封装。

例如 table 组件,封装几层,用自己定义一套参数的形式控制显示。这样带来的优点是什么?

我发现很多大公司都这么做。

分享优点即可

12631 次点击
所在节点    JavaScript
34 条回复
cnanyi
2019-10-08 17:35:30 +08:00
当升级这些组件时,如果组件的 api/属性发生了改变, 你可以只在封装层做适配, 尽量少的改动业务代码
cuzfinal
2019-10-08 19:47:35 +08:00
真正的大公司有自己的组件库
zhuzhibin
2019-10-08 23:36:39 +08:00
正常来说 应该是 1 楼的观点 一般情况下 封装是为了解耦 模块解耦,尽量让组件不要过于依赖模块或者其他依赖,这样有利于项目重构
Vogan
2019-10-09 07:35:02 +08:00
还有一种是,项目内多处使用到相同的组件,尽量要做到功能和 ui 的一致性。
nianyu
2019-10-09 08:44:36 +08:00
根据自己的业务封装 少写点代码 没什么优点
zhw2590582
2019-10-09 09:16:43 +08:00
根据业务来封装可以简化组件参数,但那也要维护好文档,否则别人很难接手。
realkaiway
2019-10-09 09:27:00 +08:00
UI 有要求,统一代码风格。
hoythan
2019-10-09 09:30:23 +08:00
总结来看,就是脱裤子放屁多此一举。
Asyncway
2019-10-09 09:48:17 +08:00
可封装另外一些比如说单行双击可输入、编辑 的 table 针对多处使用的时候比较方便,有时候不仅仅是你一个人在写代码,协同工作,保证只修改一处所有都可以修改,而不是你需要记得每一处这个地方在那怎么去改,解放劳动力吧。
Asyncway
2019-10-09 09:50:52 +08:00
我真对 element-UI 的 table 没少封装,因为原来干的是外包,很多时候客户有不同的需求,会针对 table 有不同的操作,俩三个项目经历下来,其实还是觉得封装一个好使,只需要在这一个封装好的组件里不断进行改造迭代,这个组件可重复利用性就会更高
Radom
2019-10-09 09:57:28 +08:00
看来很多人都重新封闭了 table
zzlove
2019-10-09 10:05:37 +08:00
赞同一楼观点,做一层 adapter,后期框架升级 api 变更,或者换其他框架,都只需要在 adapter 处理就行
hoythan
2019-10-09 10:22:34 +08:00
@zzlove 想法总是美好的,先不说框架跟框架之前千差万别,iview 和 elementui 就是两个完全不同的框架。光 elementui1 和 elementui 2 就不是所谓的 adapter 层能处理的了的。
另外 大的 API 变成,实际上 2 年都遇不上一次,如果框架有大的 api 更新,必然要调整到之前定义到的内容。
hoythan
2019-10-09 10:27:43 +08:00
@cuzfinal 很少大公司有自己的组件库,一个大公司涉及到的平台是在是太多了,内部的用户中心、各种管理平台不下十几个。专门写一套自己的组件库,很难满足所有的需求,另外也没有这个必要。除非是阿里腾讯体量的,但是他们内部项目也不全都是用自己的组件库。
hgrx
2019-10-09 11:00:22 +08:00
UI 的设计规范和 antd 不一样 , 不可能那么多完全一样的 table 页面我每一个都去重写一遍样式
hoythan
2019-10-09 11:21:13 +08:00
@hgrx 样式的改变应当通过样式覆盖的形式调整。结构的设计应通过 class 等父级 div 控制,UI 框架提供的组件已经是最小化的形式,真的需要每个组件重写只能说明当初选型的错误。
version
2019-10-09 12:59:27 +08:00
这种第三方再次封装还是留很多坑的.版本升级问题.新版本多了新组件.代码兼容问题. 本来就是组件拿起来就用了.一个页面多个组件组合起来用.多用数据处理清洗合适合理的 data 结构.总比封装来得实际
一个前端不要搞成 java 语言那样复杂.说是为了以后重构..到时候看代码多就头疼了.
没有哪家公司是真的会去重构.基本都是拿数据库重写写新的业务代码.
Frank520
2019-10-09 15:15:58 +08:00
我接手的项目封装的更恐怖,只需要传入一个 api 地址就可以用,相反的,如果出了问题或者需求不一致,那我找问题真是日了狗了
fewok
2019-10-22 17:53:54 +08:00
封装是为了复用
xuanbg
2019-10-22 17:53:59 +08:00
我司也一样封装一层。好处一是抽象,简单地说就是少写同样的代码。二是解耦,升级的时候不需要大动干戈到处改。第三是用起来更简单,学习成本更低。第四种情况不是很多,就是几种组件可以打包在一起作为一个组合使用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/607129

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX