Skip to content

关于 Arale 的过去、现在和未来 #358

Open
@afc163

Description

@afc163

关于 Arale 的过去、现在和未来

近三年时光,权当个总结。


2012 年 4 月,玉伯刚刚从淘宝转岗到支付宝,离开了渐渐进入死胡头的 Kissy,手攥着当红的 Sea.js 准备大干一场。两年前的支付宝前端团队也进入了团队技术的转型期,旧的前端框架需要升级,笨重的开发方式需要演进,双方一拍即合,Arale 就此诞生。

  • 从开发方式来说,Arale 摒弃了支付宝旧的开发模式,采用了彻底开源的方式,所有的代码、讨论、进度推进全部在 github 上完成,甚至于支付宝前端基础技术团队的日常工作也放到了 github 上。这在当时是一个比较大胆的尝试,因为前端天生开源,这样的工作方式让我们都感觉非常爽,那段时间大家干劲十足,代码日新月异。事实证明,这种开发方式对提高程序员的工作效率,培养开放的开源思维和视野,促成一个良好的产品观都有巨大作用。
  • 从前端技术的角度看,Arale 的基础框架模块是类似于 Backbone 的 MVC ,利用一组简单的 setter/getter 来完成数据和视图的单向绑定,并且简单实践了 DATA-API 的开发方式(和现在大红大紫 Angular 的 directive 有一点点类似)。由于 Arale 支撑的支付宝的前端需求较为传统和简单,因此在这个领域的发展就逐渐停滞了,随着 MVVM 和 Web Components 的到来,Arale 的基础框架基本上快要退出历史舞台了。而其他基于其上的模块大多是一些基础 UI 模块和工具,并没有什么高上大的东西。老实说,现在如果从 Arale 自有模块的设计来看,这是一套比较平庸的仅能满足支付宝自身需求的前端方案。
  • 从工程化的角度看,Arale 虽然自身开发的模块不多,但是针对单个模块的整个生命周期的演进,从文档和演示,本地和在线调试,单元测试和 UI 测试,构建和部署等方向,都做了大量的工作。spmtotoronicoAliceAnima 和 Sea.js 的新版本都在 Arale 这片土地上开花结果,基本上形成了现在的支付宝体验技术部的前端技术的基础框架。
  • 从前端生态圈的方向看,Arale 一开始就和 YUIKissy 这样的大教堂式的前端框架划清界限,声称自己是一种集市型的模块化解决方案,因此 Arale 虽然一开始创建了很多 UI 和工具组件,但后期的更新和维护力度越来越少,而更倾向于使用已有的开源模块(官网戏称我们可能是最不爱写组件的前端团队)。Arale 的开放式的模块化开发方案是其实是最核心的东西,也是我们一直希望输出的价值观。在 2013 年年初的组内规划中,Arale 的自有模块只是我们在生态圈中做的示范,真正的目标是让更多的前端参与到生态圈的建设中(我们甚至认真讨论了腾讯前端怎么来用我们的生态圈)。这个想法促使我们创建了类似于 npm 的 spm,旨在帮助前端工程师脱离闭关造轮子的怪圈,创造一个自由开放的开发体验。在这个方向上,从 [email protected] 到 2.x 到如今的 3.x,我们走的很艰难,有过不少回头路,也给很多人挖过大坑,但前路漫漫,我们会一直走下去。
  • 另外,Arale 对于代码风格,前端研发模式,前端服务化,构建方案,组合继承模式等等领域的讨论和实践,也为业界和我们自己留下了不少财富。

目前 Arale 的自有模块依然服务于支付宝的主站,也有不少中小开发者在使用,会针对之前的问题进行日常维护,但预计不会再有大的更新。Arale 的模块化开发方式已经转移到 spm 上进行实践,内部外部开发很多新模块都会发布到 spmjs.io 上。支付宝内部的无线方案 Anima 和前后端分离方案 chair 都直接使用了 spm3,其他业务线也将从 spm2 逐渐迁移到 spm3 上,阿里内部也有越来越多的团队开始使用 spm。而如今 AngularJS、React、Web Components、ES6 等技术方兴未艾,前后端分离的实践如火如荼,下一代类库框架正在向我们招手,接下来我们会更多尝试这些技术, 也许哪天新的 Arale3 就会出现。

就像 #362 里的回复说的那样,Arale 主要的使命是给业界提供一套前端模块的开发思路。现在的 Arale 作为一个开枝散叶的老者,基本上已经完成了它的历史使命。过去的荣耀不会被埋葬,现在的困难无法被掩藏,未来的光荣该现在争取。


参考

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions