淘宝技术之淘宝小程序的Runtime层、API和Container层
署名2021-03-03

淘宝技术小程序Runtime

淘宝技术小程序框架的Runtime层与业界方案有所不同。APPContext运行在一个独立的JavaScript执行环境中,iOSAndroid均使用JSCJavaScriptCore)引擎,通过Native层的执行环境、JS - Native桥接层和APP ContextPage Context通信层来构建一个完整的淘宝技术小程序运行时环境,实现了APPpage之间执行环境的物理隔离

2.png

淘宝技术小程序Runtime层技术架构


Page Context通过渲染层接口抽象实现了渲染容器的可替换,目前,对二方提供的是Weex渲染容器(Rax/Vue/AppX DSL),对三方提供的是WebView渲染容器(手机淘宝使用WindVane),同时支持框架接入方根据渲染层抽象接口对接自己的WebView容器实现。这种设计将小游戏的游戏渲染引擎作为渲染容器对接至淘宝淘宝技术小程序,从而基本实现了同小游戏框架的融合。

淘宝技术小程序 API

APIRuntime层的核心工作之一,API定义通过配置注入JS执行环境,实现通过Nativebridge层注入,从安全性及一致性的角度来考虑,API只能在app.js中被调用,页面的API请求只能通过发送消息到app.js的方式在APP Context中进行处理。

在淘宝天猫过去经历的多容器演进的过程中,API作为Native的基础能力,借由淘宝技术小程序项目更大范围的标准化容器背景实现了API的标准化,从而完成了API基础能力的建设。

淘宝技术小程序Container

业务容器层(Container层)负责在应用维度管理淘宝技术小程序,提供应用加载/应用包管理,用户登录管理,用户/ API权限管理,应用生命周期管理,质量保障等基础能力;宿主环境需要提供相应的适配支持,提供包括UI及导航栈的定制与适配、业务能力(分享组件等)适配、基础能力(图片库、网络库、埋点等)适配及初始化管理。

同时,为了方便框架的整体输出,业务容器层对包管理、权限、埋点、UI适配、基础能力等一系列可定制化能力做了接口抽象,从而形成手机淘宝环境的实现模块。

导航栈的设计与业界淘宝技术小程序方案不同。淘宝技术小程序方案通常只支持打开后,所有跳转均在淘宝技术小程序内部导航栈中流转,不支持外跳,只有关闭淘宝技术小程序后才可以跳出淘宝技术小程序内部导航栈。但是为了满足手机淘宝大闭环业务的需求,淘宝技术小程序框架需要实现全链路打通,页面可自由跳出淘宝技术小程序框架至NativeH5页并跳回,该需求对导航栈管理及返回行为定义提出了更高的要求。Container实现了一整套新的导航栈管理策略,克服了Android基于ActivityTask导航栈的系统限制,实现了可配置的多种回退策略,从而解决了淘宝技术小程序在手机淘宝业务下的应用痛点。淘宝技术小程序Container层的技术架构如图

3.tif

淘宝技术小程序Container层技术架构