axelu.me

微信小程序的分享配置

关于在配置微信小程序的分享时遇到的问题
2024-07-18

微信小程序的分享配置

关于在配置微信小程序的分享时遇到的问题
4 min read
created on 2024-07-18
#wechat
#config

在开发微信小程序时,需要配置小程序的分享功能。这里记录一下在配置分享时遇到的问题。

分享配置,可以全局配置,也可以局部配置。

在微信官方,似乎并没有明确提供全局的分享配置,只能在每个页面中配置分享信息。但是我们可以通过一些技巧,实现全局分享的配置。

所以,官方也没有明确全局配置和局部配置的优先级,到底谁更大。在我看来,局部配置应该优先级更高,因为局部配置是在页面中配置的,更能方便的结合一些业务属性;而全局配置是在小程序启动时配置的。

全局配置

全局分享,需要在小程序的 app.js 中配置分享信息,这样所有页面都可以有相同的默认分享信息。毕竟你可以选择在个别页面中单独配置分享信息,而其他页面使用默认分享信息。

我们需要在其中注入一个自执行函数,这个函数会在小程序启动时执行,这样就可以在其中全局配置分享信息。

假如是 Taro 小程序,这个 app.js 文件就在 src/app.js 中。

/**
 * @description 转发小程序 - 全局统一默认配置
 */
;(() => {
  let PageTmp = Page
  Page = function(pageConfig) {
    // 设置全局默认分享
    pageConfig = Object.assign(
      {
        onShareAppMessage: function() {
          return {
            title: '默认分享标题',
            path: '/pages/index/index',
          }
        },
      },
      pageConfig
    )
    PageTmp(pageConfig)
  }
})()

从代码上可以看出,我们在 Page 函数中,对 pageConfig 进行了修改,增加了 onShareAppMessage 方法,这个方法就是返回用一个对象来实现小程序的分享配置。进而实现全局分享配置。或许叫默认分享配置更合适。也是对应 @tarojs/taro 中的 onShareAppMessage 生命周期方法。

在这里使用 Object.assign 方法,重要的是要理解它是用于合并默认的分享配置与局部页面提供的 pageConfig。在这合并中,我们需要将局部页面的配置具有更高的优先级,这意味着如果存在相同键的值,局部配置会覆盖全局配置。因此,当在特定页面中设置分享信息时,这些信息会覆盖默认设置。如果某个页面没有设置分享信息,则使用默认设置。如果合并顺序交换,将永远是全局配置。

全局配置中的局部配置

在全局配置中,我们可以通过一些技巧,实现局部配置。这样,我们可以在全局配置中,配置一些默认的分享信息,但是在某些页面中,我们可以覆盖这些默认的分享信息。