MorJS 运行时补偿原理
运行时补偿主要用于处理静态编译无法处理的一些运行时动态内容,如:
- JSAPI: 实际业务使用上,不管是
JSAPI
的名字还是 JSAPI
的入参都会存在动态赋值的情况,导致了在 JSAPI
的真实调用上,很难通过 AST
去解析出实际传参; - 自定义组件 - Props 属性: 支付宝属性使用 props 声明,而微信属性使用 properties 声明,配置方式不同且使用时分别使用
this.props.x
及 this.properties.x
的方式获取,同时可能存在动态取值的情况; - 自定义组件 - 生命周期: 支付宝小程序中的
didUpdate
生命周期,在触发了props
和data
更新后都会进入didUpdate
这个生命周期,且能够在didUpdate
中访问到prevProps
/ prevData
,而在微信小程序中静态转义出这个生命周期就意味着你需要去动态分析出didUpdate
里面要用到的所有属性,然后去动态生成出这些属性的监听函数。这显然可靠程度是极其低的;
等(这里不再一一列举)。