微信小程序-全局分享、自定义分享

初六复工,难以接受,我甚至能接受今天是我六十大寿但是我难以接受今儿是正月初六。

言归正传

年前写了个分享,还要所有的页面都要有分享,那我岂不是每个页面都要写一个onShareAppMessage?nonono,这不能这么干,这违背了我们少写一行是一行的理念。
所以,我得写个全局的分享,但是这个onShareAppMessage的触发点只有button和胶囊的三个点点,所以并不是简单的写个公共方法就能解决的事儿。

经过不懈的研究,写了以下demo,供大家参考。

首先呢这个方法得写在app.js里面

app.js

//这个function是要写在APP()的外面
!function () {
  var PageTmp = Page
  Page = function (pageConfig) {
    let routerUrl = ""
    wx.onAppRoute(function (res) {
      let pages = getCurrentPages(),        
        view = pages[pages.length - 1];
      routerUrl = view.route
    })
    pageConfig = Object.assign({
      onShareAppMessage: function () {
        //需要单独写分享方法的页面
        let noGlobalSharePages=["pages/a/a","pages/b/b"]
        //分享的时候要携带的参数
        let obj = {
            userId: config.user_name
        }
        let value = encodeURIComponent(JSON.stringify(obj))
        let shareObj={}
        //判断当前页面是不是需要单独写分享方法的页面
        if (!routerUrl.includes(noGlobalSharePages)){
            shareObj={
                title:config.text,
                path: 'pages/home/home?obj=' +value,
                imageUrl: config.ShareImg
            }
        }
        return shareObj
      }
    }, pageConfig);
    PageTmp(pageConfig);
  }
}();

APP({
    globalData:...,
    onshow(){...}
})
这个方法就基本成型了

然后呢,我在写的时候遇到了个小问题,就是我在这个方法里面拿不到globalData的数据,所以我就定义了个全局变量,在小程序初始化的时候把我需要用到的this.globalData赋值到我定义的变量上面

let config;
APP({
    onLunch(){
        // 赋值
        config=this.globalData;
    },
    globalData:{
        user_name:'..',
        text:'...',
        ShareImg:'....'
    }
})
用的时候就是 config.text这样就行啦

这样的话,想用这个方法得页面就不能在页面的js里面写onShareAppMessage了,不然会把app.js里面的分享方法给覆盖掉

还有,如果想在某个页面里面写个单独的分享方法,就在js里面写个普通的onShareAppMessage就可以啦

mine.js

onShareAppMessage(){
    return {
        title:'我是一朵花',
        path:'...',
        imageUrl:'...'
    }
}
这就大功告成啦!!
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 可以在app.wxss文件中设置全局字体大小,例如: ```css /* app.wxss */ :root { --font-size: 28rpx; /* 定义全局字体大小 */ } /* 将全局字体大小应用到所有元素 */ * { font-size: var(--font-size); } ``` 然后在其他页面的wxss文件中使用`var(--font-size)`引用全局字体大小即可。如: ```css /* page.wxss */ .title { font-size: calc(var(--font-size) * 2); /* 使用全局字体大小的两倍作为标题字体大小 */ } ``` ### 回答2: 微信小程序可以通过修改全局样式的方式设置全局字体大小。 首先,在小程序的app.wxss文件中添加如下样式代码: ``` :root { --font-size: 16px; /* 设置默认字体大小 */ } ``` 然后,在需要使用的页面的wxss文件中,使用var()函数来引用全局的字体大小: ```css .text { font-size: var(--font-size); } ``` 这样,通过修改app.wxss中的--font-size变量的值,可以轻松地改变全局字体大小。 同时,如果需要允许用户自定义字体大小,可以通过小程序的设置页面,将用户选择的字体大小存储在本地缓存中。然后,在app.js的onLaunch方法中读取缓存的字体大小,并动态修改--font-size变量的值。 ```javascript App({ onLaunch: function() { // 从缓存中获取字体大小 var fontSize = wx.getStorageSync('fontSize'); // 如果缓存存在,设置全局字体大小 if (fontSize) { wxss变量中的值 = fontSize; // 将缓存中的字体大小赋值给变量 } } }) ``` 以上就是设置微信小程序全局字体大小的方法,通过修改全局样式的方式,可以快速地实现字体大小的统一调整,并允许用户自定义字体大小。 ### 回答3: 要设置微信小程序全局字体大小,可以按照以下步骤进行操作: 1. 在app.json文件中,找到"window"字段,并添加一个"fontSize"属性,用来设置全局字体大小。例如,可以设置为"fontSize": 16,代表全局字体大小为16像素。 2. 在app.wxss文件中,可以使用"rpx"作为单位来设置样式中的字体大小。根据设置的全局字体大小,其他页面中的字体大小也会相应改变。例如,可以在样式中设置".text { font-size: 32rpx; }",代表字体大小为全局字体大小的2倍。 3. 可以在需要的地方进行局部字体大小的调整。通过在对应的页面wxss文件或组件wxss文件中,单独设置某一部分的字体大小,覆盖全局字体大小的设定。例如,在某个页面的wxss文件中设置".special-text { font-size: 24rpx; }",就可以将特定部分的字体大小设置为全局字体大小的1.5倍。 4. 如果需要在不同的页面中设置不同的全局字体大小,可以在app.json文件的"pages"字段中,对每个页面进行单独的配置。例如,可以设置"pages": ["pages/index/index", "pages/detail/detail"],然后在每个页面的json文件中,添加对应的全局字体大小设置。 5. 除了以上方法,还可以使用动态设置字体的方式,在页面的生命周期函数中,通过调用API来动态修改字体大小。例如,在页面的onLoad函数中,使用wx.setNavigationBarTitle()函数来设置导航栏的字体大小。 综上所述,以上是设置微信小程序全局字体大小的几种方法。可以根据需求选择适合的方法来进行设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值