>[success] # App函数
1. 每个小程序都需要在 [app.js](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html)中调用 App 函数 注册小程序
2. 在注册时, 可以绑定对应的**生命周期函数**,**App() 必须在`app.js`中调用,必须调用且只能调用一次**
3. 共享数据但**数据不是响应式, 这里共享的数据通常是一些固定的数据**,一般将共享起名字叫做`globalData` 但可以随意任意非关键字的名字
4. 在别的页面可以通过 `getApp()` 来获取,可以理解为整个`getApp()` 作为根可以在任意页面使用这些数据,获取到小程序全局唯一的`App`实例。
~~~
const app = getApp()
从app实例对象获取数据
app.globalData.属性
~~~
| 属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
| --- | --- | --- | --- | --- | --- |
| [onLaunch](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onLaunch-Object-object) | function | | 否 | 生命周期回调——监听小程序初始化。 | |
| [onShow](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onShow-Object-object) | function | | 否 | 生命周期回调——监听小程序启动或切前台。 | |
| [onHide](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onHide) | function | | 否 | 生命周期回调——监听小程序切后台。 | |
| [onError](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onError-String-error) | function | | 否 | 错误监听函数。 | |
| [onPageNotFound](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onPageNotFound-Object-object) | function | | 否 | 页面不存在监听函数。 | [1.9.90](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) |
| [onUnhandledRejection](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onUnhandledRejection-Object-object) | function | | 否 | 未处理的 Promise 拒绝事件监听函数。 | [2.10.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) |
| [onThemeChange](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onThemeChange-Object-object) | function | | 否 | 监听系统主题变化 | [2.11.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) |
| 其他 | any | | 否 | 开发者可以添加任意的函数或数据变量到`Object`参数中,用`this`可以访问 |
>[danger] ##### 简单登录案例
1. 做一个简单的登录案例触发[onLaunch](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onLaunch-Object-object) 函数简单小程序初始化
* 先判断本地的wx的`Storage`是否有数据
* * 有数据直接赋值将用户信息保存在全局变量中
* * 没有数据将数据保存到wx的`Storage` 中
*****
app.js
~~~
// app.js
App({
onLaunch() {
const token = wx.getStorageSync("token");
const userName = wx.getStorageSync("userName");
if(!token || !userName){
wx.setStorageSync("token","123")
wx.setStorageSync("userName","456")
}
// 获取保存到全局
this.globalData.token = wx.getStorageSync("token");
this.globalData.userName = wx.getStorageSync("userName");
},
onShow(options) {
// 判断小程序的进入场景在options 里可以获取
console.log("onShow:", options);
},
onHide() {
console.log("onHide");
},
globalData: {
token: "",
userName:""
}
})
~~~
*****
* pages/home/home.js
~~~
// pages/home/home.js
Page({
data:{
userName:""
},
// 生命周期回调—监听页面加载
onLoad(){
// 获取app 全局对象
const app = getApp()
// 2.从app实例对象获取数据
const token = app.globalData.token
const userName = app.globalData.userName
console.log(token, userName);
// 3.将数据展示到界面上面
this.setData({ userName })
console.log(this.data.userName);
}
})
~~~
- 小程序了解
- webview 是什么
- Native App、Web App、Hybrid App
- 小程序架构模型
- 小程序配置文件
- app.js -- App函数
- 页面.js -- page
- 生命周期????
- 小程序 -- 页面wxml
- 小程序 -- WXS
- 小程序 -- 事件
- 小程序 -- 样式wxss
- 小程序 -- 组件开发
- 小程序 -- 组件插槽
- 小程序 -- 组件的生命周期
- 组件总结
- 小程序 -- 混入
- 小程序基本组件
- text -- 文本
- view -- 视图容器
- button -- 按钮
- image -- 图片
- scroll-view -- 滚动容器
- input -- 双向绑定
- 通用属性
- 小程序常用Api
- 微信网络请求
- 微信小程序弹窗
- 微信小程序分享
- 获取设备信息 / 获取位置信息
- Storage存储
- 页面跳转
- 小程序登录