React 技术栈在蚂蚁金服的实践

在2017在线技术峰会“阿里开源项目最佳实践”上,蚂蚁金服前端工程师崔晓斌为大家带来了“React 技术栈在蚂蚁金服的实践”的演讲。主要从研发的模式变迁开始说起,着重说明React组件库antd相关技术及其应用,接着分析了dva,最后阐述了开源的意义。

 

以下是精彩内容整理:

蚂蚁金服于 2015 年发布并开源了基于 Ant
Design 设计规范的 React 组件库 antd,从那时起,antd 就持续地得到社区的关注和帮助。经过近两年的发展,antd 在 GitHub 上面已经拥有超过一万的 Star,在内部也落地了超过 400 个项目。但其实, antd 只是我们推动 React 技术栈落地的一个切入点而已,为了进一步的提高开发效率同时也需要保证代码质量和项目的可维护性等,我们还需要提供 antd 的相关配套工具以及统一的应用架构。

 

研发模式变迁

传统研发模式中,一个项目中会有相应的后端、前端、设计师、产品经理和测试,每一部分都有专业的人来做。其中,只有后端、产品经理和测试是与业务强绑定的,前端和设计师更多地是作为流动性的资源进行投放。

我们当时面临着前端和设计资源缺乏的问题,而我们内部有着大量的中后台系统,在资源缺乏的前提下不可能保证每一个系统都有足够的前端和设计资源。这些缺乏前端和设计资源的项目的用户体验自然不会特别好,开发效率也不会高。而且,前端分散在各个业务线,对其职业发展也是非常不利的。

因此,我们的痛点是前端与设计人员紧缺而导致的老系统难以维护、新系统研发效率不高,大量产品特别是企业平台类产品的用户体验还停留在初级阶段,用户体验亟待提升等。

那么,如何在资源紧缺的情况下支持大量中后台产品同时还要兼顾研发效率和用户体验?

为了解决这个问题,我们进行了一次研发模式的变迁,从传统研发模式转变成全栈研发模式。每一个项目里面只会会分配相应的全栈开发和产品经理,前端和设计不再作为资源投入,仅提供前端或者设计的基础设施,也就意味着我们需要从一个资源型团队向服务型团队转变。

在这个过程中,我们推出了Ant
Design中台设计语言。但
Ant Design只是一个切入点,为了进一步提高研发效率,而且还要保证代码质量和可维护性,还需要提供一些相关配套。

 

antd 相关配套

如果只是个人或者小团队使用antd组件,antd 自身已经能满足其使用场景。但像蚂蚁金服这样大规模使用时,仅仅提供组件库远远是不够的,还要提供相关的配套。目前提供的配套包括Riddle、Themer和脚手架市场。

Riddle

图为antd在蚂蚁金服内部落地的数据,antd在内部大概有四百多个系统在使用,这些系统还分散在各个业务线,不同的业务线都有使用antd的UI组件库。所以如果全栈开发在使用antd的过程中碰到一些bug,或是对某些场景有疑问时,我们就只能进行线上交流。为了提高沟通效率,我们需要一个工具来辅助交流。

关注了 ant-design 这个仓库的同学会知道,如果外部用户给我们提了一个 bug,
我们会要求他使用 CodePen 提供可重现的在线demo以排查问题,其实
Riddle也起到类似的作用。但之所以会开发Riddle而不是直接使用CodePen,是因为:首先,国内访问CodePen会面临网络问题;其次,CodePen的用户体验并不怎么好;第三,蚂蚁金服作为一个商业机构,并不是所有的代码都能开放出去,所以我们需要有一个自己私有的服务。

Riddle 的功能与 CodePen 相似,在左边编辑代码,右边即可实时预览。

Riddle在用户体验上的提升在于:使用Riddle时可以不需要任何配置就能直接使用ES2015和 JSX 的语法,还支持css-modules,同时,Riddle也做了优化,如果检测到代码使用了import语句,就会自动加载相应依赖,并且可以指定依赖的版本。

Riddle首页左侧有一些标签,右边是相应标签下的示例。通过打标签的方式将Riddle的示例整理起来,可以起到Cookbook的作用,给全栈开发提供不同场景下的参考实现。

同时,示例也会按业务线进行划分,比如在同一条业务线,会有一些通用的代码,我们就可以将这些代码沉淀在Riddle上面作为一个示例,然后全栈开发就可根据需要参考这些示例的实现,或直接拷贝使用。之所以是把公共代码写成 Riddle 的示例而非业务组件,是因为并不是所有业务代码都具备抽象成业务组件的价值,所以只能作为Riddle示例存在。

Themer

使用过 antd的同学应该会知道,其实
antd的主题是可以配置的,通过配置变量表里的变量可以修改 antd的主题。但这个配置方法并不特别友好,因为它需要使用到构建工具,所以我们提供了Themer这个主题配置平台。

进入主题配置页面,就可以在左边配置相关变量,右边实时预览效果。最后可以将变量表导出。现在已经提供了不少可配置的变量,包括颜色、边框、按钮、字体、表单控件和圆角等等。

同时,Themer还是一个主题共享平台,当我们配置好主题后,可以保存到Themer上,其他人可以通过Themer找到他需要的主题直接使用,或基于该主题再进行配置。

脚手架市场

新建一个项目时,首先要新建相关的目录结构,然后要配置项目依赖和工具,这是一个繁琐并重复的劳动;其次,现在前端构建流程越来越复杂,我们不可能一开始就把环境配置好。为了解决前面两个问题,我们可以提供脚手架工具。

通过dva-cli,我们可以生成通用的脚手架。但往往还需要对脚手架进行进一步的配置,才能符合自己所开发项目的需求。所以,全栈开发人员为了方便,可能会选择直接拷贝同一条业务线里的其它项目作为脚手架使用。但拷贝过来的项目会有大量不需要的代码,配置也不一定是需要的,甚至依赖都是旧版本。所以我们要针对不同的使用场景,有针对性地提供符合其特点的脚手架。

所以我们提供了antd自己专用的脚手架市场,以便我们的用户通过它分享或者查找脚手架。与 Yeoman的 generator相比,脚手架市场的脚手架开发难度相对较低。

目前脚手架市场已经开放到外部,可以通过GitHub账号登录,并且可以在登录后以PR的形式将整理出的脚手架提交到脚手架市场。

同时脚手架市场也支持在线上预览脚手架运行起来之后的效果。

 

应用架构 dva

由于前端的业务逻辑和数据层都在变得越来越复杂,我们在使用React时不可能仅仅使用React原生提供的数据通信方案,或直接用React组件管理业务逻辑,所以需要框架帮助处理这些问题。同时,我们内部有近500个系统在使用React技术栈,不可能让每一个项目自己去折腾一套自己数据通信等方案。所以我们要提供一个统一的应用架构,也就是dva。

在谈 dva 之前,需要先了解一下蚂蚁金服 React 应用架构的历史。其实与antd同期,我们就开始探索自己的应用架构Roof,并且Roof@0.4就开始在内部大规模推广,但由于Roof本身概念比较多,难于理解,所以在Roof@0.5中简化了一些概念,并引进了Redux里面的概念,然后在迭代的过程中,Roof 变得越来越像 Redux,最后甚至直接用Redux作为核心。

Redux

在 Roof 变得和 Redux相差无几后,不少项目就开始直接使用Redux了,直接使用 Refux可以享受到很多好处:

  • 轻量级数据流方案,解决从
    state 到 component 的单向数据流转问题
  • 借助 Action 和 Reducer 实现可预测的 state 变更
  • 社区活跃,丰富的扩展、调试方案

但 Redux 的使用也带来了新的问题:

项目中遇到的每个问题都有非常多的库以供选择,给项目带来了技术选型的成本;

Redux作为一个类库,并没有对代码作过多的约束,这是灵活性,但对于蚂蚁金服这种规模的使用而言,就会变得不可控;

开发功能时,一个功能的代码分散在
reducers actions sagas 等目录下面,需要来回切换,影响专注力;

用户发起异步请求时页面或部分 UI 需要进入 loading 状态,这需要通过一遍遍重复地写 showLoading 和 hideLoading来实现;

出错处理太繁琐,每个异步 saga 都要 try ..
catch;

项目太大了,需要动态加载方案。

Dva

所以我们推出了自己的应用架构dva,就是为了解决上面的问题。dva开放以来,已经得到了广泛的认可,现在在github上已经有2600个star,并且得到了大V的支持和推广。现在dva已经是我们内部主推的应用架构,有接近20%系统在使用dva。

那么。dva到底是什么呢?

dva是一个框架而非类库,它会对代码的写法和组织方式有比较多的约束以保证不同团队写出的代码尽可能相似;其次,它是基于 redux, react-router, redux-saga 的轻量级封装;最后,它借鉴 elm 的概念,包括Reducer,
Effect 和 Subscription等。

dva仅有5个API,支持HMR,支持 SSR
(ServerSideRender),支持 Mobile/ReactNative,支持 TypeScript,支持路由和 Model 的动态加载,并提供了完善的语法分析库 dva-ast。

图为dva写的相对简单的应用程序,新建应用,并注册相关的model和路由后,就可以给 React 组件订阅一些数据,最后启动就可以把应用渲染到页面了。

 

关于开源

开源不仅仅是开放源码。

对项目而言:

  • 开源是一块试金石。解决一个问题有多种方案,每种方案也会有多种实现,那么哪种方案是最好的呢?我们可以通过把项目开源开放到社区上,让社区筛选出相对优秀的方案。

  • 开源是一种软件开发模式。同一个项目如果仅仅在内部使用,很多时候我们只会满足于可用。但开放到社区后,社区就会根据自己的使用场景去评估并实践这个项目,对于其中不合理的地方提出建议。

  • 开源项目需要经营。antd就有许多地方需要经营,包括贡献氛围、语言氛围和互助氛围,有利于社区健康发展。

对个人而言:

开源是一种学习方式,开源可以展示个人能力。

 

崔晓斌:蚂蚁金服前端工程师,目前主要负责 React 组件(如:antd、react-component)及配套工具(如:bisheng)的开发。

时间: 2025-01-01 13:42:26

React 技术栈在蚂蚁金服的实践的相关文章

蚂蚁金服人工智能部技术总监李小龙:智能金融实践

在本次大会上,蚂蚁金服人工智能部技术总监李小龙作为 CCAI 2017 智能金融论坛主席为参会者带来了<蚂蚁金服智能金融实践>的分享. 以下内容根据李小龙本次主题演讲整理,略有删减: 今天早上我们的副总裁.首席数据科学家漆远博士给大家讲了很多金融智能创新的例子,我主要是从<蚂蚁金服智能金融实践>这方面给大家作阐述. 首先,我们认为金融服务是AI创新的最好场景之一,主要是三个理由: 第一,场景非常丰富,打开支付宝我们知道这不仅是一个支付工具,可以把AI应用到理财.投资.贷款.征信等业

数据库、架构、移动、机器学习,蚂蚁金服与阿里云技术布道亿级互联网金融实践

随着云计算.移动.活的大数据.机器学习算法的进展,人工智能正在经历巨大的突破.人工智能已经成为很多业务的驱动力,并且开始在金融服务中发挥力量. 蚂蚁金服致力于创新金融技术,并且用新技术为大众和小微企业提供普惠金融服务. 8月30-31日,一场别开生面的技术大会-"蚂蚁金服&阿里云在线金融技术峰会"( https://yq.aliyun.com/activity/109)将在线举办.聚焦数据库.应用架构.移动开发.机器学习等热门领域,为金融业技术开发者深入解析互联网应用的前沿应用

蚂蚁金服CTO程立:金融级分布式交易的技术路径

蚂蚁金服首席技术官 程立 移动互联网.大数据与云计算作为新的基础设施,催生了新的互联网经济,正在推动各行各业的升级.伴随蚂蚁金服在新金融领域的探索,蚂蚁金服技术团队也在金融技术与架构领域不断开拓.从2005 年每秒处理1笔交易到2016 年"双十一"每秒处理12 万笔交易,从单一的支付到覆盖微贷.理财.保险.信用.银行等,通过十多年的探索与实践,我们形成一套包含金融级分布式交易.分布式大数据分析与决策等在内的完整架构与技术体系. 金融级系统的关键目标 如果将建造系统比作盖楼的话,建一个

马云演示蚂蚁金服的Smile to Pay刷脸支付技术

摘要: 在CeBIT上,马云向德国总理默克尔与中国副总理马凯演示了蚂蚁金服的Smile to Pay刷脸支付技术:马云在现场使用手机摄像头扫描了自己的脸,在淘宝上买了一枚20欧元的旧汉诺威展邮票, 在CeBIT上,马云向德国总理默克尔与中国副总理马凯演示了蚂蚁金服的Smile to Pay"刷脸支付"技术:马云在现场使用手机摄像头扫描了自己的脸,在淘宝上买了一枚20欧元的旧汉诺威展邮票,并将这枚邮票送给了展会. 会上马云展示的人脸识别支付技术,由蚂蚁金服柒车间和Face++合作开发.F

蚂蚁金服全面开放AI客服能力,比人工客服效率高出30-60倍

人工智能取代人类的言论早已甚嚣尘上,工作内容单调.重复的客服领域首当其冲. 日前,在杭州举办的新客服高峰论坛上,蚂蚁金服宣布将对外全面开放以AI技术为核心的"新客服平台".这也是继理财.保险等领域后,蚂蚁金服AI开放的又一大场景. 智能预测,一秒作答 传统的客服系统流程繁琐.僵硬.用户拨打客服电话时,常常会遇见这种情况:"某某服务请按1.某某服务请按2".遇上紧急情况时,这样的语音提示简直令人抓狂. 而拨打支付宝客服电话,用户不用反复听1-9的提示音,机械地按键操作

中国人工智能学会通讯——蚂蚁金服智能金融实践

今天早上我们的副总裁.首席数据科学家漆远博士给大家讲了很多金融智能创新的例子,我主要是从"蚂蚁金服智能金融实践"这方面给大家作阐述. 首先,我们认为金融服务是AI创新的最好场景之一,主要是三个理由.第一,场景非常丰富,打开支付宝我们知道这不仅是一个支付工具,可以把AI应用到理财.投资.贷款.征信等业务中,还可以把AI结合到安全.保险.客服里.第二,数据量大,全球数十亿用户,日常交易量巨大:另外天然业务数据化,比起其他行业来说,业务数据化程度要好得多.第三,具有很大社会意义,我们的诉求是

鲁肃:蚂蚁金服的三个梦想

4月15日,在清华大学举办的,阿里巴巴技术含量最高的技术盛典"阿里技术论坛"上,蚂蚁金服的技术天团首次集体亮相.本文将分享的是蚂蚁CTO程立入职11年来的心路历程,干货满满"蚂蚁金服的三个梦想",即刻奉上. 程立,花名鲁肃,2005年加盟支付宝.作为支付宝首席架构师,支付宝第一代架构设计者,支付宝停机发布17小时的救火大队长,程立在公司已然是"神一般的存在".尽管衣品有待提高,但丝毫不妨碍集技术与颜值于一身的他称为公司众女同学心目中的"

蚂蚁金服安全应急响应中心上线

1月11日,蚂蚁金服安全应急响应中心(AFSRC)正式上线.网址:security.alipay.com.该平台旨在集合安全领域的专家.白帽子.社会团体及个人共同发现潜在的漏洞信息,并依此建立漏洞统计分析中心,预知并自查风险,及时修复漏洞,帮助提升自身产品及业务的安全性,同时为用户营造一个更安全的互联网生态圈. 2015年,苹果Xcode病毒事件,邮箱信息泄露,各类网站宕机,大量应用及网站服务器端漏洞频频被爆,安全始终是互联网行业一个长期面临的问题. 蚂蚁金服安全部相关负责人表示,蚂蚁金服安全应

蚂蚁金服&amp;阿里云在线金融技术峰会全套资料(视频+PDF)公开!

8月30-31日我们成功举办了"蚂蚁金服&阿里云在线金融技术峰会".本次峰会聚焦数据库.应用架构.移动开发.机器学习等热门领域,帮助金融业技术开发者深入解析互联网应用的前沿应用与技术实践.目前相关活动视频.整理文章已经出炉,整理如下,供大家参考. 蚂蚁金服&阿里云在线金融技术峰会精彩回顾:https://yq.aliyun.com/activity/109 为了让大家更好的了解本次峰会议题和分享讲师,我们汇总了本次议题介绍如下,供大家参考.在峰会开始前,邀请大家仔细看下