2020 AS A FRONT-END DEVELOPER

January 1, 2020 (4y ago)

借着「双🥚」佳节,我也来盘一盘作为一个前端,自己在 2020 这一年做过的一些事情。看大家也聊了不少挺技术的技术方向的,什么 Serverless、WSAM、Flutter,五花八门,啥都有。我想了想,还是傍着业务背景,来聊一聊这一年我和我的团队在前端方向上做过的事情和它背后的思考。

开始之前,先说说我所在的团队是阿里云智能,钉钉事业部下的**「专有钉钉」前端团队**。这支年轻的队伍,刚一岁多一点,正在基于公有钉钉已有的标准能力去服务于大型客户。尤其是政府和央企这类大规模的组织,满足他们各种花里胡哨的业务需求。

也正是由于服务于大型客户的基调和阿里「云钉一体」的战略。我们整个团队今年都围绕着:「专有(云)化」、「模块化」、「定制化」这些词来做技术布局。团队在阿里集团已有的基础设施之上,快速蓬勃成长,怀着一颗拓宽前端 2B2G 领域边界的命题,走了 1 年 ~ 为此在这里就来和大家聊一聊我们团队在这三个关键词上的探索和思考,也算抛砖引玉了。

专有化

成熟的 2B 业务,都少不了专有化的影子。试想如果你的整套产品 & 服务(前后端)都要脱离公网环境,部署到一个专有环境里面运行。此时此刻前端应用将:

  • 无法使用 CDN 加速资源获取

  • 有限的互联网访问

  • 大量成熟的基于公网的服务和解决方案都无法使用了

刚开始会有一种孤立无援的感觉。好在今年为了解决专有化的问题,整个团队还是在工程上折腾了不少:

  • 静态资源构建时分析,本地聚合,输出构建包

  • 前端资源 Docker 镜像化,配合运维平台一键发布

  • 前端页面脚本本地化客户端集成(CEF 容器离线化)

  • ...

解决了专有环境交付的「温饱问题 🍚」,让项目在交付的时候变得灵动了一些。不过这一块技术还有很多空间待发掘,尤其是阿里小程序体系在的混合云架构下的部署模式,是接下来的一个重要命题。

模块化

模块化」一直都是程序设计重要的命题。今年团队面对的「模块化」是在云钉一体背景下,要将「钉钉」这个 App 变成一副骨架,并且在这之上承载的血肉、组织、器官要能被定制和替换。这就对现有的业务模块提出了更高的抽象标准和要求:

  • 模块需要「高内聚」,外放的能力要收敛

  • 模块需要「结构化」,满足可插拔可装配的诉求

  • 模块需要「标准化」,可扩展,可定制,可替换

在这样的背景下,得益于这段时间的服务端和 native 客户端同学的共创和疯狂输入,在 DDD(领域驱动设计) 等思想的熏陶之下,让我们尝试在存量的模块中,去探寻这些模块的「DNA」🧬,抽离它们的不动点和核心设计成为「模块核心」,进一步沉淀为所谓的「业务资产」。

这本质上是高层次的业务抽象,其过程是一个「持续精炼」的过程,是每一个核心业务模块(比如聊天 IM、通讯录等等)接下来 3-5 年持久探索的命题。这样,是不是可以顺带给自己定一个「小目标」,成为中国协同应用模块设计和实现最 nx 的前端团队 😀 啥的,也挺有意思的吧。

定制化

你永远无法预测你的客户会提出什么奇特的需求。 你也很难对你的大(bà)客(bà)户提出的需求做强硬的回绝。

云钉一体下的钉钉是「千人千面」的。在面对大量的业务定制需求的背景下,团队不肯能无限制堆人上去满足定制诉求。因而我们要搭建的是「戏台子」,让我们的合作伙伴成为「唱戏人」。期望有一套模式能够让合作伙伴在钉钉平台能力的基础上,去做深度定制和扩展,延展出新的可能!

为此在上面「专有化」和「模块化」的基础上,我们还需要去设法「赋能」我们的合作伙伴去扩展定制现有「平台能力」,我们得去开放一切可能开放的东西。得益于 AOPSPIIoC 等经典的编程思想,我们让它们在前端有了新的武器去做扩展和定制化设计。

这一块目前在高速起步阶段,团队在拼命试错,试图找到一个可行解,能够把模块交给三方定制的路走通。在这条路上,我深刻的领悟到,前端也能够得益于这些经典的程序设计思想,比如像 Inversify 这类专注于 IoC 和 DI 的前端框架。这也让我明白作为一个 FE,永远不要给自己设限,这样能够走得更远 ~

最后

再说一说我自己今年最重要的一个认知吧:

  • 业务基调,决定技术基调。

  • 业务规模,决定技术规模。

  • 业务多元,决定技术多元。

  • ...

蓬勃的业务,才会带来 **沸腾 **的技术!在这一年里自己也和团队一起:

  • 研究过集团的跨端物料 Rax,并在业务中落地

  • 制定过全量 TS、React Hooks、Redux 的技术栈

  • 折腾过消息(IM)模块中 Rx.js 的花式玩法

  • 尝鲜过 Flutter、WebAssembly 等技术,试着在业务里找落地点

  • 思考过如何让 微前端(MS)成为中后台应用「永葆青春」活力的落地方案

  • ...

同样经历了团队从几个人到十几个人的扩张。这个过程让我明白每个团队在不同的阶段,有不同的节奏,做的事情也要有一定规律可循。尤其在做技术这件事情上,慢不得,也急不得,一味揠苗助长会玩脱的。到头来看还是一步一个脚印 👣,踏实做技术人才是王道。

嗯,哈,也算是给 2020 交了一张相对满意的答卷了 😉 相信, **2021 势必是组织数字化愈演愈烈的一年 ~ **路漫漫其修远兮,吾将上下而求索!


最后的最后,还是给这支年轻的前端队伍打个小广告 —— 专有钉钉前端团队,欢迎有志之士一起去定义 2B2G 前端研发体系的未来 ~ 欢迎私聊 or 发送简历到我的邮箱 📮 qingnan.yqn@alibaba-inc.com ,我会厚颜无耻地加你微信的 😀