小程序 全局数据获取 与 模块化

全局函数 getApp() 可以获取全局的应用实例

通过全局实例可以获取全局数据, 全局的数据可以在 App() 中的globalData中设置

它这个globalData和userInfo是 固定 的, 我们只需要要在其中添加键值对, 比如下面的 name : "张三"

//app.js
App({
  onLaunch: function () {
 
  },
  globalData: {
    userInfo: null,
    name : "张三"            // 在globalData中添加全局数据 name = '张三'
  }
})

我在index.js中就可以获取全局数据:

// index.js
var appInstance = getApp();            // 先通过全局函数, 获取全局实例
Page({
  data: {
  },

  click : function() {
    console.log(appInstance.globalData.name);    // 打印出 张三
  }
})

那么小程序的模块化是什么呢

将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块

在目录结构中创建一个data.js文件(只有这么一个js文件, 不是创建页面, 所以没有相应的wxml, wxss, josn文件)

// data.js

// 定义变量 (一个对象数组)
var datas = [
  {
    "name":'小张', "age":24, "location":'北京'
  },{
    "name":'小王', "age":22, "location":'广东'
  },{
    "name": '小刘', "age":20, "idcard":'1234567890'
  }
]

// 将变量datas封装为一个对象, 并暴露出来
module.exports = {           
  da : datas                 // 由于{}表示一个对象, 所以这个对象的键是da, 值是datas
}                            // 在外面引用的时候要通过键 da 来取 datas

现在通过index.js来取值

// index.js
var mydata = require('../data/data.js');    // mydata是一个对象, 因为模块化是以对象暴露出来的
Page({
  data: {
  },

  click : function() {
    console.log(mydata.da[0].name);
  }
})

解释:

module.exports = {da:datas}, 表示创建对象{da:datas}并将它暴露出来

var mydata = require('../data/data.js'), 表示使用mydata接收这个js文件中暴露出来的{da:datas}对象

因此mydata = {da:datas}

所以在使用的时候mydata.da就是对象.属性的方式获取属性值(即这个对象数组datas)

mydata.da[0]获取的是对象数组中的第一个元素(对象)

mydata.da[0].name就是对象.属性的方式获取属性值(这个值就是 '小张' )

猜你喜欢

转载自blog.csdn.net/lljxk2008/article/details/82154347