您的当前位置:首页正文

微信小程序-基础库-开发文档学习笔记

2024-11-27 来源:个人技术集锦



小程序基础库

小程序的底层基础库迭代速度是非常快的
组件、API其实都是小程序基础库进行包装提供的,基础库的职责还要处理数据绑定、组件系统、事件系统、通信系统等一系列框架逻辑
小程序的基础库是JavaScript编写的,它可以被注入到渲染层和逻辑层运行

基础库载入时机

为了让小程序业务代码能够调用wx.navigateTo等API以及组件,就需要在启动小程序后先载入基础库接着再载入业务代码
渲染层WebView层注入的称为WebView基础库,逻辑层注入的称为AppService基础库
小程序的基础库不会被打包在某个小程序的代码包里边,它会被提前内置在微信客户端

基础库的版本号

小程序基础库版本号使用 semver规范,格式为 Major.Minor.Patch

  • 通常我们月度发布版本会把Minor提升一位,例如从1.9.x升级到1.10.x
  • 如果是修正版本,会把Patch提升一位,例如1.10.0升级到 1.10.1
  • Major位则是重大特性发布时才会被提升一位

可以通过wx.getSystemInfo()或者wx.getSystemInfoSync()方法获取小程序版本号

console.log(wx.getSystemInfoSync().SDKVersion)

在比较版本号时,不要偷懒,要拆分后按照大小逐个比较

JS异常

WebView层有两种方法可以捕捉JS异常

  • try, catch方案,你可以针对某个代码块使用try,catch包装,这个代码块运行时出错时能在catch块里边捕捉到
  • window.onerror方案,也可以通过window.addEventListener("error", function(evt){}),这个方法能捕捉到语法错误跟运行时错误

逻辑层不存在window对象,因此逻辑层AppService侧无法通过window.onerror来捕捉异常
在逻辑层AppService侧通过把App实例和Page实例的各个生命周期等方法包裹在try-catch里进行捕捉异常
同时在App构造器里提供了onError的回调,当业务代码运行产生异常时,这个回调被触发

基础库的更新

基础库版本变动

小程序的很多能力需要微信客户端来支撑,例如蓝牙、直播能力、微信运动等,可以说,小程序基础库的迭代离不开微信客户端的发布
为了避免新版本的基础库给线上小程序带来未知的影响,微信客户端都是携带上一个稳定版的基础库发布
等到微信客户端正式发布后,我们会开始灰度推送1.7.0版本的基础库到6.5.11的微信客户端里
如果存在重大Bug,那此次推送会被回退,也就是基础库版本回到1.6.0版本

推送基础库过程

在正式灰度推送新版本基础库前,我们内部有严格的自动化测试流程,保证已有的测试用例全部能通过
接着进行灰度推送,一般灰度时长是12个小时,遇到一些重大代码改动时可能灰度时间会更久
灰度推送完成后,我们会发布新能力的文档,此时我们也会关注微信开发者社区的Bug反馈,根据情况再决定是否要推送Patch版本进行一些Bug的修复

显示全文