小程序的组件、API其实都属于小程序基础库。 基础库的职责是处理数据绑定、组件系统、事件系统、通信系统等一系列框架逻辑,让整个小程序有序的运作起来。 小程序的基础库是JavaScript编写的,它可以被注入到渲染层和逻辑层运行。
渲染层注入的基础库叫做WebView基础库。逻辑层注入的基础库叫做AppService基础库。小程序的基础库是内置在微信客户端里的,这样做的好处有两点:
降低业务小程序的代码包大小。基础库中的Bug 可以由官方统一修复,无需修改小程序的代码包小程序基础库版本号使用 semver 规范,格式为 Major.Minor.Patch,如1.2.0
Major:重大特性发布时提升1位Minor:月度发布时提升1位Patch:版本修正时提升1位通过wx.getSystemInfo()或者wx.getSystemInfoSync()方法获取小程序版本号:
let info = wx.getSystemInfoSync() console.log("小程序基础库版本号为:" + info.SDKVersion)compareVersion(‘1.11.0’, ‘1.9.9’) // => 1 // 1表示 1.11.0比1.9.9要新 compareVersion(‘1.11.0’, ‘1.11.0’) // => 0 // 0表示1.11.0和1.11.0是同一个版本 compareVersion(‘1.11.0’, ‘1.99.0’) // => -1 // -1表示1.11.0比 1.99.0要老
微信客户端的迭代更新会带动小程序基础库的迭代更新。比如: 当前微信版本为6.5.10,小程序基础库版本为1.6.0。 微信即将发布的6.5.11版,微信6.5.11版里会加入小程序的直播组件能力。
由于新的能力由微信客户端的月度发布版提供,下一个要发布的基础库版本定为1.7.0。为了避免新版本的基础库给线上小程序带来未知的影响,微信客户端都是携带上一个稳定版的基础库发布的。 也就是微信客户端正式发布6.5.11的版本依旧内置1.6.0版本的基础库。
微信客户端正式发布后,微信会灰度推送1.7.0版本的基础库到6.5.11的微信客户端里,在这个过程会仔细监控各类异常现象、开发者的反馈和用户的反馈。 一般灰度时长为12小时。灰度结束后,用户设备上就会有新版本的基础库。 如果存在重大Bug,那此次推送会被回退,也就是基础库版本回到1.6.0版本。当1.7.0版本推送稳定后,小程序文档就会更新,开发者就可以在小程序中使用1.7.0版本所提供的新能力——直播组件。 之后,如果小程序基础库出现任何Bug,微信官方会推送Patch版本进行修复,此时基础库版本号的Patch位会被提升一位,也就是1.7.1版本。
