App.js是项目的入口文件,页面的 page.js 文件会覆盖 app.js文件,

App.js文件里面的一些方法:

onLaunch : function(){}:这个方法是当小程序加载完毕后就执行的方法

onLoad:function(options){}:页面初始化 options 为页面跳转所传递过来的参数

onReady:function(){}:页面渲染完成

onShow:function(){}:页面显示

onHide:function(){}:页面隐藏

onUnload:function(){}:页面关闭

还可以在 app.js的onLaunch里面定义一些全局的方法,如登录的方法和获取用户信息的方法(wx.getSetting),另外,在app.js里面,写上一些需要的东西,如globalData,在其他页面需要时,可以直接调用,无需一直写!

例子:

1、在app.js中App({ })里面写

//app.js
App({
onLaunch: function () {
// 展示本地存储能力
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs) // 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId 验证平台账号是否登录绑定过
var that = this;
wx.request({
method: 'GET',
url: this.globalData.serverApi + "/mobileApi/user/checkBind?code="+res.code,
header: {
'content-type': 'application/json'
},
success (res) {
if(res.data.code == 301){
//未登录
var openId = res.data.openId;
wx.reLaunch({
url: '/pages/login/login?openId='+openId
})
}else if(res.data.code == 1){
//已登录
that.globalData.userInfo = res.data.userInfo;
that.globalData.token = res.data.token;
var menuList = res.data.menuList;
wx.setStorageSync('menuList', menuList);
}else if(res.data.code == 0){
//获取openId失败
wx.showToast({
title: res.data.msg,
icon: 'none',
duration: 2000
})
} // 由于 checkBind 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (that.checkBindCallback) {
that.checkBindCallback(res)
}
}
})
}
}) // 获取用户信息
/* wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
wx.getUserInfo({
success: res => {
// 可以将 res 发送给后台解码出 unionId
this.globalData.userInfo = res.userInfo // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
}
})
}
}
}) */
},
globalData: {
serverApi: "http://c15112b047.iok.la",
staticApi: "http://c15112b047.iok.la/uploadPath",
userInfo: null,
token: null
}
})

获取当前微信用户信息可以用在登陆页:判断是否存在登陆。登陆过就改变 app.js 里面的配置。例如这个用户是否登陆了,如果全局里面没有用户的信息,需要跳转到登陆的页面进行登陆,如果说有了用户的信息就不用跳转到登陆页面,当登陆完成之后,我们就可以设置全局的数据,然后返回到跳转的页面,直接读取用户的信息就可以。

2、在页面的index.js开头写上,然后就可以在page里面的onLoad()里调用你需要的东西!

//index.js
//获取应用实例
const app = getApp()
Page({
onLoad: function () {
if(app.globalData.token){
//代表从页面跳转过来
var menuList = wx.getStorageSync('menuList');
this.getMenuList(menuList);
this.animation = wx.createAnimation();
this.setData({hidden: false});
}else{
//代表第一次加载
wx.showLoading({
title: '加载中'
})
// 由于 checkBind 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
app.checkBindCallback = res => {
wx.hideLoading();
if(res.data.code == 1){
var menuList = wx.getStorageSync('menuList');
this.getMenuList(menuList);
this.animation = wx.createAnimation();
this.setData({hidden: false});
}
}
}
}
})

最新文章

  1. Linux实战教学笔记07:Linux系统目录结构介绍
  2. 【转】Artificial Neurons and Single-Layer Neural Networks
  3. Java 之ThreadLocal 对应C#之ThreadStatic
  4. uva11292 Dragon of Loowater
  5. Android sharePreference使用
  6. gulp安装和使用简介
  7. asp.net等项目编译失败的原因之不能写入
  8. 每天一道LeetCode--119.Pascal's Triangle II(杨辉三角)
  9. C/C++错误分析errno,perror,strerror和GetLastError()函数返回的错误代码的意义
  10. Semaphore — Windows API
  11. 命名空间“System.Web.Mvc”中不存在类型或命名空间“Ajax”(是否缺少程序集引用?)
  12. 前端编程提高之旅(六)----backbone实现todoMVC
  13. Python 关于字符串处理技巧
  14. echarts3 迁徙图 迁入迁出
  15. cluster.go
  16. nginx设置目录浏览及解决中文乱码问题
  17. BZOJ3560 DZY Loves Math V 数论 快速幂
  18. 获取进程ID,父进程ID,进程完整路径
  19. P3258 [JLOI2014]松鼠的新家 (简单的点差分)
  20. TP5.1:request请求对象(使用四种方式获取)

热门文章

  1. linux 高可用----keepalived+lvs
  2. 全网最硬核 JVM TLAB 分析(单篇版不包含额外加菜)
  3. 自己动手实现java断点/单步调试(二)
  4. HDU5213 Lucky【容斥+莫队】
  5. HDU6661 Acesrc and String Theory【SA】
  6. 组合数取模及Lucas定理
  7. Codeforces Round #304 (Div. 2) C. Basketball Exercise (DP)
  8. dict与set -- Python
  9. 关于TCP状态TIME_WAIT的理解
  10. 缓冲区溢出实验 6 exit(0)