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.将业务数据到渲染数据的转换过程独立出来
本文目录一览: 1、苹果会被黑客入侵吗 2、苹果被黑客入侵的表现 3、苹果手机被黑客攻击了怎么办? 苹果会被黑客入侵吗 会的,但是入侵成本很高,所以一般保持好的使用习惯,没有人会入侵你电脑或...
掌握“上海市空姐在线预约微信号码联络”的详细信息,如何在线预约北京市国外商务。这篇內容叙述的是有关高端女学妹在线预约步骤,女学妹材料相片,手机微信联系电话和服务项目价钱及其可在线预约的大城市有什么。...
“海里三宝”代表什么意思(你了解珍贵文物界的“海里三宝”是啥吗)?5月18日是国际性博物馆日。今日,我不但要与大伙儿共享“趣味性全国各地展览会”系列产品文章内容,也要向这些把冒着生命威胁抢救出来的...
偶遇前任是选择绅士的打招呼,还是直接无视,对于很多人来说都很纠结最好的表现是什么,情侣之间分手之后还能做朋友的很少,偶遇前任该不该打招呼?下面友谊长存小编带来介绍。 偶遇前任该不该打招呼? 没有什...
如今越来越多人经营一些小本生意,比如做服装或快餐等。那如果是小面积门店适合做什么生意?PChouse带大家了解下吧。 1、外卖店 如果门店的面积比较小,我们可换门经营外卖店,这样不用在店内摆放...
据了解,iPhone5将于9月21日开售,签订机价钱与4s同样。第一批开售国家和地区中包含中国香港,标价5588港米起。 iPhone5选用的是4.0英尺大的电容屏,适用多点触摸和多张...