全局函数 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就是对象.属性的方式获取属性值(这个值就是 '小张' )