>[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存儲
- 頁面跳轉
- 小程序登錄