干货分享:蚂蚁金服前端框架和工程化实践

框架发展历史

 

 

这是我们的框架发展时间线。
• 2015 年之前我们有 Sea.JS、Arale、SPM 开源技术方案,大家可以有所耳闻。
• 2015 年我们接入 React,从自研的 Roof 到 Redux 再到开源的 Dva,一步步验证我们的最佳实践,并把这些实践交给开源社区检验。
• 2017 年开始尝试了新一代的企业级前端框架,Umi 和 Bigfish,前者是从无线业务中长出来的,后者是从中台业务中长出来的。
• 一个团队出两个框架毕竟不是长久之计,后来老大直接把两拨人调到一个组,于是就愉快地合并在了一起。

 

 

在 Umi 和 Bigfish 时代,我们从刀耕火种的时代跨入了工业化时代。因为在此之前,用户需要接触很多技术栈和细节,在 Umi 和 Bigfish 中,用户只要知道一个框架,剩下的全部不用了解。框架像一个魔法球,把各种技术栈吸到一起,加工后吐给用户,以此来支撑业务。

web前端全栈资料粉丝福利(面试题、视频、资料笔记、进阶路线)

 

 

在两个框架合并之后,我们的现状是这样:
• umi 对外开源,bigfish 对内服务内部同学。
• bigfish 扔掉原有实现,改造成 umi + umi 插件集的一个架构。
• 我们不是第一个这么做的,类似的还有 eggjs 和 chair。这是一种很好的方式,开源和业务两不误。
• 那么,这是我们的框架终局吗?以及是否还有更好的方式?大家也可以思考下,后面在未来规划区域会有探讨。

 

 

这是一些蚂蚁的内部数据:
• 1100+ 内部应用数
• 新增产品 80% 都用此框架
• 包含 100+ 插件数量,社区够活跃,尤其是内部的
• 1500+ 内部使用者

目前来看,这个框架基本统一了内部的框架使用情况,不仅有不熟前端的 Java 开发,略熟前端的外包,还有资深的前端同学。要获得那么多同学的认可,并不是件容易的事。

为什么我们能成

那么,为什么我们能成?个人理解,我觉得有几个关键词:
• 人
• 业务
• 流程
• 开源

 

 

人是非常重要的一环,甚至比技术本身更重要一些。

那么别人为啥要用你的框架?首先,框架要好用,这是最基本的;然后,使用者尤其是资深的前端同学,还得在这上面找到自己的成就感和 ownership,另外如果绩效漂亮就更好了。总不能别人用你的框架,然后只有你自己一个人的绩效好,那是不会长久的。

我们的解法是插件体系。

 

 

框架不是凭空而来的,需求来自于业务,所以用框架写业务的同学往往能发现框架不足的点,他们可以开发适用于自己业务的框架插件,反哺框架。如果这是通用需求,那就亮了。框架的内部开发群有 100+ 人,包含大量来自业务线的同学,这就是插件体系的好处,人人都能贡献。为了让写插件变得简单,我们给框架分了五层架构。

 

 

包含依赖层、插件层、插件集层、应用类型层和部署模式层,大家可在任何一层都可贡献代码,
• 可以写一个独立的功能插件,比如和某个服务的对接,比如扩展路由的某个功能,比如实现一套特殊的补丁方案;
• 可以做归类,把一系列插件整理到一个插件集里,适用于某一类的业务开发;
• 可以扩展应用类型,比如 SPA、MPA、微前端等等;
• 可以扩展部署模式,比如和不同的框架或平台做结合;

 

 

这是插件生命周期图,包含:
• node 环境执行的编译时
• 浏览器上执行的运行时
• ui 辅助层的编辑时

大部分插件体系只会考虑 node 编译时,我们加上运行时和编辑时的支持,赋予了插件更大的能力。具体做了什么就不展开了,没个框架都不同,但做的事情其实大体一致,往上说是 html、css、js,往下说还有各种工具的配置,比如 webpack、babel、postcss、dev 中间件 等等。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值