简单介绍源于淘系技术部的Apache Weex
署名2021-03-02


Apache Weex 源于淘系技术部发起的移动客户端跨平台开发方案,淘系技术部的Apache Weex 目前已成为得到业界认可的一种研发方式。在 淘系技术部Apache Weex 诞生之前,淘系技术部基于移动客户端的商业模式竞争日趋激烈,业界对于更低的交付成本、更快的交付时间、更强的动态性、更敏捷的业务形态有着越来越强的诉求。彼时,Android iOS 操作系统都已历时八年并日趋成熟;移动互联网也已沉浸在4G时代,系统和环境的成熟为淘系技术部Apache Weex的诞生提供了契机。

源起

2015年,Facebook开源React Native对业界带来了巨大的冲击,淘系技术部为移动端的跨平台研发带来了新气象。React Native技术栈是对当时体系的一种颠覆,但是,如果使用React Native则意味着要放弃前端领域的积累,再加上早期版本存在很多Bug,我们逐渐认识到React Native并不完美。

求人不如求己。适逢天猫推出双11活动,业务团队对双11主会场的性能、动态性都提出了极高的要求,传统的 WebView 方案很难满足其性能要求。在这个契机下,淘系技术部提出了Weex方案。期间,相关团队紧密配合,从开发到上线仅用了数周(Weeks)时间,故得名Weex

All in Weex

2015年,天猫双11活动的成功开展证明了 Weex 的可行性,在之后几年的时间里,淘系技术部开始在 Weex 上全面发力,淘系技术部并逐步构建了如图2-10所示的 Weex 技术架构0

3.pngWeex技术架构

在前端 DSL 层,Weex 同时支持 Rax Vue 两种写法,以适应不同的前端技术栈。此外,Weex 还提供了 DSL 扩展机制,使得 Weex 可以与特定的前端 DSL 解耦。在 JS Framework 层,各种 DSL 都将被转化为同样的 JavaScript 语句,并被 JS 引擎执行,此时,DSL 层的差异已被抹平。

Weex Core 层使用 C++ 语言进行编写,提供了 AndroidiOS 两端的通用能力,如LayoutTimerJS & C++ Binding 等。Render 层运行在 Android iOS 平台上,提供了渲染、事件、网络请求等依赖平台的能力。

目前,Weex 除了支持历年的大促活动(618、双11、双12等)之外,在日常业务中也得到了大规模的使用,并得到了业界许多 APP (如图2-11所列举,该图来自 Apache Weex 官网,由外部开发者贡献)的认可,成为了一种新的移动应用研发模式。

4.png

接入WeexAPP

与传统的移动客户端研发模式相比,Weex 可以通过更少的人力投入(只投入前端工程师而不是 iOS Android 工程师),提供更高的动态性,以及超出传统 WebView 跨平台方案的性能与体验,Weex的优势如0