美文网首页
微信小程序开发笔记

微信小程序开发笔记

作者: 青城墨阕 | 来源:发表于2021-03-30 13:33 被阅读0次
    一、常见小程序开发框架对比
    图解小程序开发框架.png
    二、小程序更新机制
    1. 概念:
    • 冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。
    • 热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。
        // 在app.js中,即小程序启动时
        onShow: function(options) {
            this.checkUpdateVersion();
        },
        checkUpdateVersion() {
            // 判断微信版本是否 兼容小程序更新机制API的使用
            if (wx.canIUse('getUpdateManager')) {
                // 创建 UpdateManager 实例
                const updateManager = wx.getUpdateManager();
                // 检测版本更新
                updateManager.onCheckForUpdate(function(res) {
                    console.log('获取版本', res);
                    // 请求完新版本信息的回调
                    if (res.hasUpdate) {
                        // 监听小程序有版本更新事件
                        updateManager.onUpdateReady(function() {
                            // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 ( 此处进行了自动更新操作)
                            updateManager.applyUpdate();
                        })
                        updateManager.onUpdateFailed(function() {
                            // 新版本下载失败
                            wx.showModal({
                                title: '已经有新版本喽~',
                                content: '请您删除当前小程序,到微信 “发现-小程序” 页,重新搜索打开哦~',
                            });
                        })
                    }
                })
            } else {
                // 此时微信版本太低(一般而言版本都是支持的)
                wx.showModal({
                    title: '溫馨提示',
                    content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
                });
            }
        },
    
    图解原理.png
    三、关于数据请求时机的要求:
    1. onLaunch::小程序启动以后便不会改变的数据
    2. onShow(app.js内的):小程序启动以后便不再改动的数据
    3. onLoad: 页面加载以后便不会改变的数据
    4. onShow(page内的):「页面显示/从后台跳回前端显示/从跳转页返回」时便需要更新的数据
    image.png
    四、规范setData操作:
    原理图.png

    • 推荐方案:

    1. 减少setData数据传输量:
      a) 仅传输视图层使用到的数据,JS环境用到的数据存放到data对象外;
      b) 合理利用局部更新。setData支持使用数据路径的方式对对象的局部字段进行更新。
    2. 降低setData执行频率:
      c) 将多个setData调用合并执行,减少线程间通信频次;
      d) 当需要在频繁触发的用户事件(如PageScroll、Resize事件)中调用setData,合理的利用函数防抖(debounce)和函数节流(throttle)可以减少setData执行次数。
    // 合理利用局部更新。setData支持使用数据路径的方式对对象的局部字段进行更新。
    let tarIndex = 2;
     this.setData({
             [`dotList[${tarIndex}].dotShow`]: false,
             [`dotList[${tarIndex}].dotNum`]: 0
    });
    

    相关文章

      网友评论

          本文标题:微信小程序开发笔记

          本文链接:https://www.haomeiwen.com/subject/sktghltx.html