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。
Weex技术架构
在前端 DSL 层,Weex 同时支持 Rax 与 Vue 两种写法,以适应不同的前端技术栈。此外,Weex 还提供了 DSL 扩展机制,使得 Weex 可以与特定的前端 DSL 解耦。在 JS Framework 层,各种 DSL 都将被转化为同样的 JavaScript 语句,并被 JS 引擎执行,此时,DSL 层的差异已被抹平。
Weex Core 层使用 C++ 语言进行编写,提供了 Android、iOS 两端的通用能力,如Layout、Timer、JS & C++ Binding 等。Render 层运行在 Android 或 iOS 平台上,提供了渲染、事件、网络请求等依赖平台的能力。
目前,Weex 除了支持历年的大促活动(618、双11、双12等)之外,在日常业务中也得到了大规模的使用,并得到了业界许多 APP (如图2-11所列举,该图来自 Apache Weex 官网,由外部开发者贡献)的认可,成为了一种新的移动应用研发模式。
接入Weex的APP
与传统的移动客户端研发模式相比,Weex 可以通过更少的人力投入(只投入前端工程师而不是 iOS 和 Android 工程师),提供更高的动态性,以及超出传统 WebView 跨平台方案的性能与体验,Weex的优势如0。