什么是 alita js 社区

这个文章是昨天发在知乎上的,应朋友的意思,让我在掘金上发一下。

从 alitajs 社区建立开始,一直会被问到 什么是 alitajs 社区,它主要是做什么的?

其实这个社区最早的时候只有我和 何乐 同学两个人。

那时候,我们在处理 Ant Design Pro@4  相关的问题,因为 Pro@4 需要使用 TypeScript 重写,而我是在今年年初才开始正式学习使用的 TypeScript ,所以有很多 TypeScript 相关的问题需要请教何乐。

于是开始了,我和他较为频繁的技术交流。

可能是沟通的多了,我们的想法也都比较多,他对云存储云开发兴趣浓厚,我对前端场景化封装和开发工具编写较为感兴趣,或许是相互觉得对方的研究方向,在自己未来的学习工作中,都可能会有接触的可能,于是,我们开始了相互吹捧相互鼓励的交流,考虑到现在在许多部门内部,都有着做全员提效的 KPI 指标。于是拍脑袋,云开发还没到,先搞提效。

因为我们两个都是 antd  和 umi 的狂热粉丝,想着不然搞一个 umi 社团,后来讨论,antd 和 umi 挂的名头,都是蚂蚁金服,我们并没有这个资格,不然我们就自己搞一个呗。

于是在2019年4月1号的时候,建立了 alitajs 社区。

现在好了,社区有了,但是怎么发展呢?我们两个都没有经验,我想总要有一个什么东西能够吸引到其他人的吧。

最终经过讨论,结合了 umi 和 pro 项目在 issues 的常见问题,做了一个 umi 的脚手架封装库,alita 。

它刚开始只是作为一个 umi 的配置简化的脚手架,后来经过吸收社区的需求,发现,antd 团队在移动端 h5 这一块的响应需求较少,但是,使用 umi 做移动端开发的朋友却很多。内置了这阶段帮社区朋友开发的一些 umi 插件,达到了,在配置文件中设置 appType:'h5'  就能着手移动端页面开发的效果。

当时,umi 对内提供 bigfish ,对外开源 umi 。我和许多朋友一样,都十分的好奇,bigfish 到底和 umi 有什么差别。其实官方在社区中已经给出了答案,bigfish 只是 umi 结合了内部流程和方案,而对内提供服务的一个 umi 插件集。那时候,我也在想,bigfish 什么时候会开源。 其实总有一种想法,藏起来不对外的,一定是个好东西。

开发完成之后,我想着,umi 在 蚂蚁金服内部有几千个项目检验,那我是不是应该实际项目中跑一跑 alita 。于是在一次,月报中,毛遂自荐了,alita 框架,大体的抄了 umi 的技术架构,然后结合使用 umi 的好处,和 alita 的好处一起,一股脑的推给了领导。领导最终同意了,在我们的一个新项目中试用。和 RN 技术做了对比。可能是 RN 的开发体验太差了,显得 alita 开发体验良好。

项目上线之后,和领导讨论了,使用 RN 开发的人员,可以无缝的转换到 alita 上,因为在配置和环境上做了大量的简化,而在语法上是一致的用法。在只做减法,不做加法的技术更新的诱惑下,在我们整个部门内落地了 alita。

后来,是有一个项目,需要打包成手机 apk ,要做混合应用。领导来问我,能不能做,alita 有没有能力接。我就说有。心想着 cordova 能够把一个普通的 web 项目打包成 apk ,那肯定可以把 umi 的产物也打包了。

于是开发了 umi-plugin-cordova ,事实上并不是这么简单。但最终在ios开发的帮助下,解决了一些问题之后。发现它竟然莫名的好用。cordova 开发,竟然也可以热加载了。

写完cordova插件,我才想明白了,bigfish 可能更多的是一种类似的场景化需求,他依托于阿里内部大量的服务支撑,做的更多的是对内部方案的调用和响应。所以其实不是给不给的问题,而是给了能不能用的问题。但是在社区中,是不是也有类似的场景化需求,或者第三方服务提供商的用户,他们是否也存在共同的需求?

经过几个项目的落地,领导觉得,后续部门内新增的项目,全部使用 alita 。(以上提到很多次领导,其实除了拍马屁之外,我是想表达,其实领导喜欢,真的会更快的推进技术方案的落地)然后我就混迹在多个项目之间,把他们几个项目的公共需求,结合到一起,能够通过框架支撑的就通过框架支撑,不能的,就通过公共组件支撑。也是因为这个过程,我就在想,我们内相同技术栈的就有这么多的重复工作,那在社区上的不是更多吗?

于是就开始在社区上推广,加了三石 、王幸康 、 hang1017 和 陈杰 ,写了rc-charts 和一些组件的封装。

那时候DiamondYuan  开发了umi 的vscode插件 ,而我刚好想和五灵alibaba/kiwi把 alibaba/kiwi 的方案落地到 umi 中(虽然这个事情暂时被耽搁了),所以请教了 DiamondYuan。

后来,因为做 umi 的 keep alive 方案,加了 fi3ework 。

因为文档方案 milady  加了 鬼厉 。

因为 alita 框架定位和 antd-icon  的一些问题,邀请了包子熊 。

后来,又因为 keep alive 方案,认识了 陈俊宇 ,(他的 React 中的状态自动保存(KeepAlive) ,相信有些朋友都看过了)我们在 umi 中有两个方案尝试:umi-plugin-cache-route 和 umi-plugin-keep-alive 。

期间还有其他的一些朋友,听说了 alita ,也加入了我们。虽然,有些朋友因为业务上的繁忙,没有时间投入开源项目中;也有一些朋友,机智的将自己业务中的需求,提出来,让社区里的朋友帮忙实现,完全享受着社区带来的福利。其实,这些行为都是 alitajs 社区提倡的。在平时交流中,分享一些技术和业务,总是能够给大家提供一些帮助。

回过头来说,虽然我们在公司企业的项目中不一定会选用自己的开发的方案,但是,在 alitajs 社区,我们都会互相鼓励造轮子,因为开源最大的乐趣就是开源。

经历了9个月的发展,如果再有人问我,什么是 alitajs 社区?

它是一群抱着相互赋能相互提效想法的小伙伴聚在一起做着一些简单开源项目的团队。

它是做什么的?

alitajs 社区专注于业务开发,让你无需关注底层技术实现。

刚好昨天有一个朋友在群里问:沉浸在业务中的程序员要怎么突破迷茫期和瓶颈期?

我想加入 alitajs 社区,一定会对你有所帮助的。

umi 是蚂蚁金服的底层前端框架,它好用好用好用,强烈推荐,然后如果你们用了pro@2+,你们就已经在用了umi。请给 umi 一个 star 吧! github.com/umijs/umi