Controlling complexity is the essence of computer programming.
随着前端开发复杂度的日益提升,组件化开发应运而生,并随着 FIS、React 等优秀框架的出现遍地开花。这一过程同样发生在美团,面临业务规模的快速发展和工程师团队的不断扩张,美团历经引入组件化解决资源整合问题、逐步增强组件功能促进开发效率、重新打造新一代组件化方案适应全栈开发和共享共建等阶段,努力“controlling complexity”。本文将介绍美团组件化开发的实践过程。
组件化 1.0:资源重组
在美团早期,前端资源是按照页面或者类似业务页面 *** 的形式进行组织的。例如 order.js 对应订单相关页面的交互,account.css 对应账户相关页面的样式。这种方式在过去的较长一段时间内,持续支撑了整个项目的正常推进,功勋卓著。
随着业务规模的增加和开发团队的扩张,这套机制逐渐显示出它的一些不足:
1.资源冗余
页面的逐渐增加,交互的逐渐复杂化,导致对应的 css 和 js 都有大幅度增长,进而出现为了依赖某个 js 中的一个函数,需要加载整个模块,或者为了使用某个 css 中的部分样式依赖整个 css,冗余资源较多
2.对应关系不直观
没有显而易见的对应规则,导致的一个问题是修改某个业务模块的 css 或者 js 时,几乎只能依靠 grep。靠人来维护页面模块 html、css 和 js 之间的依赖关系,容易犯错,常常出现内容已经删除但是 css 或 js 还存在的问题。
3.难于单元测试
以页面为最小粒度进行资源整合,不同功能的业务模块相互影响,复杂度太高,自动化测试难以推进。
2013 年开始,在调研了 FIS、BEM 等方案之后,结合美团开发框架的实际,美团初步实现了一套轻量级的组件化开发方案。主要的改进是:
1.以页面功能组件为单位聚合前端资源
2.自动加载符合约定的 css、js 资源
3.将业务数据到渲染数据的转换过程独立出来
昨天,百家号推出了信用分!满分100分,扣除到0分,您就拜拜了! 百家号的信用分一经推出。立马,整个自媒体圈内,哀嚎遍野: 怒气丛生: 不知道百家号此举的目的为何。 小编今天也在不...
冻疮怎么根治(冬季易患冻疮怎么治疗)冬季是非常寒冷,温度能低至零下二十多度,所以相对容易出现被冻伤的情况,很容易形成冻疮。冬季出现冻疮是很常见,当人们出现冻疮之时,一定要及时去做医治,否则是会加大病症...
康健险该怎么与医疗、康健相团结,接下来我们一起来接头接头~ 一、阐明工具 首先相识下我们此次阐明工具: 1. 康健险 什么事康健险?康健保险是以被保险人在保险期间内因疾病不能从事正常事情,或因疾病造...
对付电子商务网站的建树来说,每一个设计元素都与方针消费者的转化率密切相关。因此,每一个电子商务网站的成长都不绝增强了对用户体验的存眷,同时也越发注重搜索引擎优化的友好性。 那么,电商网站开拓,你该存...
Golden sunset over quiet sea 人生就是修行,修行就是修心,修心的最高境界就是心外无物、心如止水或心静如水。 心有多大,世界就有多大 内心强大就是心外无物、心静如水...
定居城市:广东省深圳市 籍 贯:广东省 性 别:女 年 龄:三十六岁 出生日期:1980-12-1 星 座:射手座 身 高:151公分 体 重:41KG 体 形:娇小玲珑 学 历:职高...