小程序设置全局变量,全局方法

最近在做小程序项目,遇到多个页面共用页面变量的问题,小程序需要渲染到页面的数据,都需要在页面data进行定义,这样如果多个页面都需要用到同一个变量,就会造成资源的重复定义;

例子:

Page({
    data: {
        backgroundImg: request.getImgServerApi() + ‘section2/background.png‘,
        helpLinkImg: request.getImgServerApi() + ‘cardPackage/card-link2.png‘,
        logoImg: request.getImgServerApi() + ‘section2/logo.png‘
    }) 

图片是共用一个地址的,方便后面修改地址,所以前缀是拼接的。

但这样解决不了每个页面data都需要重写路径,所以用了一下下面的处理方案。

对Page进行处理:

Page({
    data:{}
})

处理为

var page = pageModel.mixin({
    data: {}})Page(page);
pageModel代码为:
const config = require(‘./../config.js‘);
const util = require(‘./util.js‘);
const mixin = function(pageData){
    var globalData = {//全局变量
        data:config.data
    };
    return util.mixin(globalData,pageData);
}

module.exports = {
    mixin
}

核心思想在于合并data对象,

mixin方法:

function mixin(target,source){//数据对象拓展
    var args = Array.prototype.slice.call(arguments),i=1,key,index,
    ride = typeof args[args.length-1]==‘boolean‘?args.pop():true;

    if(args.length===1){
        target = this;
        i=0;
    }
    while((source = args[i++])){
        for(key in source){
            if(key in target){
                if(typeof source[key] == ‘object‘ && typeof target[key] == ‘object‘){
                    for(index in source[key]){
                        target[key][index] = source[key][index];
                    }
                }
            }else if(ride || !(key in target)){
                target[key]=source[key];
            }
        }
    }
    return target;
}

实现效果:

在全局定义一个data变量,所有pageModel覆盖的页面都可以使用:

config.js

// 这里添加的属性,可以通过app.config 来访问
var config = {
    env: ‘prd‘, // 在这里切换当前环境
    cdnBase: ‘‘,
    data:{//全局变量
        test:‘123‘
    }
};

config.apiBase = ENV_API[config.env];

module.exports = config;

页面直接可以用{{test}}来进行显示,全局方法也可以用类似方法定义,(*^__^*) 嘻嘻……

 
时间: 2024-08-25 15:36:29

小程序设置全局变量,全局方法的相关文章

微信小程序的正确开启方法,最新更新小程序附带详细图

我的微信版本早就更新到了最新版本V6.5.3 ,但是找遍了每个角落,都始终见不到"小程序"相关的东西,后来才知道,正确的开启方法如下! 打开微信,搜索"小程序示例"即可,点击小程序,进入界面,退出来之后会在"发现"一栏的最下面有"小程序的选项",详细的看下图.等添加完之后就可以从里面搜索小程序,添加小程序了! 看到了吧,非常多的小程序,可以免下载很多APP,节省手机空间. 但是,这个小程序搜索有个规则,就是你要搜索小程序,必须

打开小程序设置页(wx.openSetting),注意点

注意:bindtap的处理函数中,可以直接调用 wx.openSetting 资料 网址 wx.openSetting(调起客户端小程序设置界面,返回用户设置的操作结果) https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.openSetting.html 打开小程序设置页(wx.openSetting)接口调整 https://developers.weixin.qq.com/community/de

如何在微信小程序定义全局变量、全局函数、如何实现 函数复用 模块化开发等问题详解

1.如何定义全局数据 在app.js的App({})中定义的数据或函数都是全局的,在页面中可以通过var app = getApp();  app.function/key的方式调用,不过我们没有必要再app.js中定义全局函数. 定义 全局函数 如下图: 2.如何实现代码的复用 实现函数的复用前我们先复习一个知识点:require 用来加载代码,而 exports 和 module.exports 则用来导出代码.module.exports 对象是由模块系统创建的.在我们自己写模块的时候,需

微信小程序 如何定义全局函数?

微信小程序 定义全局数据.函数复用.模版等 微信小程序 定义全局数据.函数复用.模版等问题总结: 1.如何定义全局数据 在app.js的App({})中定义的数据或函数都是全局的,在页面中可以通过var app = getApp();? app.function/key的方式调用,不过我们没有必要再app.js中定义全局函数. 2.如何实现代码的复用 函数的复用: test.js test: function(){ } module.exports={ test:test } ? other.j

微信小程序页面跳转方法总结

微信小程序页面跳转目前有以下方法(不全面的欢迎补充): 1. 利用小程序提供的 API 跳转: // 保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面. // 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,但是 redirectTo wx.navigateTo({ url: 'page/home/home?user_id=111' }) // 关闭当前页面,返回上一页面或多级页面.可通过 getCurrentPages() 获取当

微信小程序设置了合法请求域名,小程序一直提示不在合法域名列别中

hotapp 有免费的https proxy ,可以免费代理请求任何http或者https服务,只要设置好合法域名为https://wxapi.hotapp.cn , 就可以请求网址如请求小程序联盟的例子为点击下面链接,可以查看效果https://wxapi.hotapp.cn/proxy/?appkey=hotapp11377340&url=http://www.wxapp-union.com/ 这个https proxy 有什么用(1)如果开发期间公司的业务还未支持https,可以先用这个请

微信小程序设置服务器地址

1. 首先登录微信公众平台小程序账号,点击左下角的设置,然后点击右边的开发设置 2. 然后下边就有服务器域名: 3. 就可以在这里进行修改,假设你实际使用的地址是https://www.baidu.com,那么填写的时候只需要填写www.baidu.com就可以了.https://的部分是公众平台会自动补充上去的. 4. request合法域名基本上一定要填写,因为只要小程序需要服务器,基本上就需要这个设置.socket合法域名一般是小程序功能涉及即时通信时需要.uploadFile合法域名和d

小程序开发——统一请求方法

一般我们习惯将请求接口的方法统一起来,变成公共方法 但是在小程序中,似乎遇到了一些问题,官方给的示例是: this.setData({ name: 'MINA' }) this局限了请求的地方,似乎只能在每个业务页面内,setData方法的参数不够配置化 以下是我参考一些资料之后得到的解决方案 util.js var apiHost = "....."; //url添加最后的相对路径即可 function getRequest(url, that, targetName) { wx.r

一种轻量级的微信小程序日志监控的方法

今天一个活动要写个H5,明天一个功能要用小程序,天天都在写bug.用户反馈小程序用起来有问题还特么还不知道到底出了啥bug,反馈多了,老板要扣工资了!看来挖了太多坑不填也不行,程序异常还是要主动追踪,今天给大家介绍一个轻量级的错误日志监控服务Fundebug. Fundebug的小程序监控插件接入简单,只需要下载相应的插件文件,然后在app.js文件中引入并配置apikey即可.唯一要注意的就是微信需要设置request合法域名这一点不能忘记了. 1. 创建微信小程序监控项目 需要注册账号,点击