鳕鱼天空

This is Mr Wang's Tech Blog.

微信小程序 页面监听全局变量的变化

前言

在前段时间的开发过程中,遇到了一个需要监听是否有推送的需求,需要在不同的页面监听全局变量从而进行条件渲染,因此总结了一下便有了下篇文章.

介绍

当我们开发一个大型的微信小程序时,通常会涉及到多个页面或组件之间的数据传递和共享,而全局变量可以方便地实现这一需求。但是当全局变量的值发生变化时,我们需要及时地更新页面或组件的数据,以保证用户界面的实时性。这时候,我们就需要用到监听器的机制。

监听器是一种设计模式,用于在对象状态发生改变时,自动调用特定的函数。在微信小程序中,我们可以通过定义一个全局变量来存储所有的监听器函数,并在需要监听的页面或组件中注册监听器函数,以实现对全局变量的监听。当全局变量的值发生改变时,我们就可以通过遍历所有的监听器函数,并依次调用这些函数,及时更新页面或组件的数据。

示例

下面是一个在微信小程序中实现监听器机制的示例代码:

在 App.js 中定义全局变量和注册监听器方法

App({
  globalData: {
    currentUser: null, // 全局变量 currentUser
    listeners: [], // 存储监听器函数的数组
  },
  // 注册监听器函数的方法
  registerListener: function (listener) {
    this.globalData.listeners.push(listener);
  },
  // 触发监听器函数的方法
  triggerListeners: function () {
    var listeners = this.globalData.listeners;
    for (var i = 0; i < listeners.length; i++) {
      listeners[i]();
    }
  }
})

在需要监听的页面或组件中注册监听器函数

Page({
  onLoad: function () {
    // 注册监听器函数
    getApp().registerListener(this.onCurrentUserChange.bind(this));
  },
  onCurrentUserChange: function () {
    // 全局变量 currentUser 的值发生改变时,调用该函数
    this.setData({
      currentUser: getApp().globalData.currentUser
    })
  }
})

在全局变量发生改变时触发监听器函数

getApp().globalData.currentUser = {
  name: '小明',
  age: 20
};
getApp().triggerListeners();

 

.Net7 IDE智能提示汉化 (VS2022)

本地化xml生成工具

工具以dotnet cli发布,使用dotnet tool进行安装

dotnet tool install -g islocalizer

.net7的汉化包已经有现成的了,可以直接进行安装

islocalizer install auto -m net7.0 -l zh-cn

工具会自动从github下载对应的包进行安装(可能需要访问加速)。 也可以通过-cc参数指定内容对照类型

  • OriginFirst: 原始内容在前
  • LocaleFirst: 本地化内容在前
  • None: 没有对照
islocalizer install auto -m net7.0 -l zh-cn -cc OriginFirst

自定义生成

如下示例生成.net6的原始内容在前的zh-cn本地化包,并使用 --------- 分隔原文和本地化内容,生成完成后的包路径会输出到控制台。

islocalizer build -m net7.0 -l zh-cn -cc OriginFirst -sl '---------'

可以通过 islocalizer build -h 查看更多的构建参数信息。

首次构建过程可能非常缓慢(需要爬取所有的页面),相关文件会被缓存(单zh-cn内容大小约3.5G)