{"action":"created","issue":{"url":"https://api.github.com/repos/aralejs/aralejs.org/issues/358","labels_url":"https://api.github.com/repos/aralejs/aralejs.org/issues/358/labels{/name}","comments_url":"https://api.github.com/repos/aralejs/aralejs.org/issues/358/comments","events_url":"https://api.github.com/repos/aralejs/aralejs.org/issues/358/events","html_url":"https://github.com/aralejs/aralejs.org/issues/358","id":40428291,"number":358,"title":"关于 Arale 的过去、现在和未来","user":{"login":"afc163","id":507615,"avatar_url":"https://avatars.githubusercontent.com/u/507615?v=3","gravatar_id":"","url":"https://api.github.com/users/afc163","html_url":"https://github.com/afc163","followers_url":"https://api.github.com/users/afc163/followers","following_url":"https://api.github.com/users/afc163/following{/other_user}","gists_url":"https://api.github.com/users/afc163/gists{/gist_id}","starred_url":"https://api.github.com/users/afc163/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/afc163/subscriptions","organizations_url":"https://api.github.com/users/afc163/orgs","repos_url":"https://api.github.com/users/afc163/repos","events_url":"https://api.github.com/users/afc163/events{/privacy}","received_events_url":"https://api.github.com/users/afc163/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/aralejs/aralejs.org/labels/discussion","name":"discussion","color":"DDDDDD"},{"url":"https://api.github.com/repos/aralejs/aralejs.org/labels/milestone","name":"milestone","color":"02d7e1"},{"url":"https://api.github.com/repos/aralejs/aralejs.org/labels/plan","name":"plan","color":"02e10c"}],"state":"open","locked":false,"assignee":{"login":"lifesinger","id":97227,"avatar_url":"https://avatars.githubusercontent.com/u/97227?v=3","gravatar_id":"","url":"https://api.github.com/users/lifesinger","html_url":"https://github.com/lifesinger","followers_url":"https://api.github.com/users/lifesinger/followers","following_url":"https://api.github.com/users/lifesinger/following{/other_user}","gists_url":"https://api.github.com/users/lifesinger/gists{/gist_id}","starred_url":"https://api.github.com/users/lifesinger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lifesinger/subscriptions","organizations_url":"https://api.github.com/users/lifesinger/orgs","repos_url":"https://api.github.com/users/lifesinger/repos","events_url":"https://api.github.com/users/lifesinger/events{/privacy}","received_events_url":"https://api.github.com/users/lifesinger/received_events","type":"User","site_admin":false},"milestone":null,"comments":24,"created_at":"2014-08-17T06:50:02Z","updated_at":"2015-12-16T06:33:44Z","closed_at":null,"body":"# 关于 Arale 的过去、现在和未来\r\n\r\n> 近三年时光，权当个总结。\r\n\r\n---\r\n\r\n![](https://t.alipayobjects.com/images/T1DeVdXaBqXXXXXXXX.png)\r\n\r\n2012 年 4 月，[玉伯](https://github.com/lifesinger/)刚刚从淘宝转岗到支付宝，离开了渐渐进入死胡头的 [Kissy](http://kissyui.com/)，手攥着当红的 [Sea.js](https://github.com/seajs/seajs) 准备大干一场。两年前的支付宝前端团队也进入了团队技术的转型期，旧的前端框架需要升级，笨重的开发方式需要演进，双方一拍即合，[Arale](http://aralejs.org/) 就此诞生。\r\n\r\n- 从开发方式来说，Arale 摒弃了支付宝旧的开发模式，采用了彻底开源的方式，所有的代码、讨论、进度推进全部在 github 上完成，甚至于支付宝前端基础技术团队的日常工作也放到了 github 上。这在当时是一个比较大胆的尝试，因为前端天生开源，这样的工作方式让我们都感觉非常爽，那段时间大家干劲十足，代码日新月异。事实证明，这种开发方式对提高程序员的工作效率，培养开放的开源思维和视野，促成一个良好的产品观都有巨大作用。\r\n\r\n- 从前端技术的角度看，Arale 的基础框架模块是类似于 Backbone 的 MVC ，利用一组简单的 setter/getter 来完成数据和视图的单向绑定，并且简单实践了 [DATA-API](http://aralejs.org/widget/docs/data-api.html) 的开发方式（和现在大红大紫 Angular 的 directive 有一点点类似）。由于 Arale 支撑的支付宝的前端需求较为传统和简单，因此在这个领域的发展就逐渐停滞了，随着 MVVM 和 Web Components 的到来，Arale 的基础框架基本上快要退出历史舞台了。而其他基于其上的模块大多是一些基础 UI 模块和工具，并没有什么高上大的东西。老实说，现在如果从 Arale 自有模块的设计来看，这是一套比较平庸的仅能满足支付宝自身需求的前端方案。\r\n\r\n- 从工程化的角度看，Arale 虽然自身开发的模块不多，但是针对单个模块的整个生命周期的演进，从文档和演示，本地和在线调试，单元测试和 UI 测试，构建和部署等方向，都做了大量的工作。[spm](https://github.com/spmjs/spm)、[totoro](http://totorojs.org/)、[nico](https://github.com/lepture/nico)、[Alice](http://aliceui.org/)、[Anima](http://animajs.org/) 和 Sea.js 的新版本都在 Arale 这片土地上开花结果，基本上形成了现在的支付宝体验技术部的前端技术的基础框架。\r\n\r\n- 从前端生态圈的方向看，Arale 一开始就和 `YUI`、`Kissy` 这样的大教堂式的前端框架划清界限，声称自己是一种集市型的模块化解决方案，因此 Arale 虽然一开始创建了很多 UI 和工具组件，但后期的更新和维护力度越来越少，而更倾向于使用已有的开源模块（[官网戏称](http://aralejs.org/docs/about-arale.html#%E7%AE%80%E4%BB%8B)我们可能是最不爱写组件的前端团队）。Arale 的开放式的模块化开发方案是其实是最核心的东西，也是我们一直希望输出的价值观。在 2013 年年初的组内规划中，Arale 的自有模块只是我们在生态圈中做的示范，真正的目标是让更多的前端参与到生态圈的建设中（我们甚至认真讨论了腾讯前端怎么来用我们的生态圈）。这个想法促使我们创建了类似于 npm 的 spm，旨在帮助前端工程师脱离闭关造轮子的怪圈，创造一个自由开放的开发体验。在这个方向上，从 spm@1.x 到 2.x 到如今的 3.x，我们走的很艰难，有过不少回头路，也给很多人挖过大坑，但前路漫漫，我们会一直走下去。\r\n\r\n- 另外，Arale 对于代码风格，前端研发模式，前端服务化，构建方案，组合继承模式等等领域的讨论和实践，也为业界和我们自己留下了不少财富。\r\n\r\n\r\n\r\n目前 Arale 的自有模块依然服务于支付宝的主站，也有不少中小开发者在使用，会针对之前的问题进行日常维护，但预计不会再有大的更新。Arale 的模块化开发方式已经转移到 [spm](http://spmjs.io) 上进行实践，内部外部开发很多新模块都会发布到 [spmjs.io](http://spmjs.io) 上。支付宝内部的无线方案 [Anima](http://spmjs.io/search?q=anima) 和前后端分离方案 chair 都直接使用了 spm3，其他业务线也将从 spm2 逐渐迁移到 spm3 上，阿里内部也有越来越多的团队开始使用 spm。而如今 AngularJS、React、Web Components、ES6 等技术方兴未艾，前后端分离的实践如火如荼，下一代类库框架正在向我们招手，接下来我们会更多尝试这些技术，新的 `Arale3` 也许马上会出现。\r\n\r\n就像 [#362](https://github.com/aralejs/aralejs.org/issues/362#issuecomment-59674820) 里的回复说的那样，Arale 主要的使命是给业界提供一套前端模块的开发思路。现在的 Arale 作为一个开枝散叶的老者，基本上已经完成了它的历史使命。过去的荣耀不会被埋葬，现在的困难无法被掩藏，未来的光荣该现在争取。\r\n\r\n---\r\n\r\n## 参考\r\n\r\n- [玉伯的发布预告微博](http://weibo.com/1748374882/ygSM72QJv?from=page_1005051748374882_profile&wvr=6&mod=weibotime&type=comment)\r\n- [Arale 架构思路](https://github.com/aralejs/aralejs.org/wiki/Arale-2.0-%E6%9E%B6%E6%9E%84%E6%80%9D%E8%B7%AF)\r\n- [研发模式的思考](https://github.com/aralejs/aralejs.org/issues/50)\r\n- [Arale FAQ](https://github.com/aralejs/aralejs.org/wiki/FAQ)\r\n- [组件编码风格讨论](https://github.com/aralejs/aralejs.org/issues/18)\r\n- [打包流程和发布方式讨论](https://github.com/aralejs/aralejs.org/issues/19)\r\n- [开放式社区参与](https://github.com/aralejs/aralejs.org/wiki/%E5%BC%80%E6%94%BE%E5%BC%8F%E7%A4%BE%E5%8C%BA%E5%8F%82%E4%B8%8E)\r\n- [spm3 发布通告](https://github.com/spmjs/spm/issues/819)\r\n- [Arale 背后的设计理念](https://github.com/lifesinger/lifesinger.github.com/issues/106)"},"comment":{"url":"https://api.github.com/repos/aralejs/aralejs.org/issues/comments/165014407","html_url":"https://github.com/aralejs/aralejs.org/issues/358#issuecomment-165014407","issue_url":"https://api.github.com/repos/aralejs/aralejs.org/issues/358","id":165014407,"user":{"login":"igo903","id":1073301,"avatar_url":"https://avatars.githubusercontent.com/u/1073301?v=3","gravatar_id":"","url":"https://api.github.com/users/igo903","html_url":"https://github.com/igo903","followers_url":"https://api.github.com/users/igo903/followers","following_url":"https://api.github.com/users/igo903/following{/other_user}","gists_url":"https://api.github.com/users/igo903/gists{/gist_id}","starred_url":"https://api.github.com/users/igo903/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/igo903/subscriptions","organizations_url":"https://api.github.com/users/igo903/orgs","repos_url":"https://api.github.com/users/igo903/repos","events_url":"https://api.github.com/users/igo903/events{/privacy}","received_events_url":"https://api.github.com/users/igo903/received_events","type":"User","site_admin":false},"created_at":"2015-12-16T06:33:43Z","updated_at":"2015-12-16T06:33:43Z","body":"Arale3, 什么时候推出？\r\nAnt.design 是不是就是Arale的进化版..."}}