微信小程序學習筆記(三)--框架-邏輯層


邏輯層將數據進行處理后發送給視圖層,同時接受視圖層的事件反饋。

開發者寫的所有代碼最終將會打包成一份 JavaScript 文件,並在小程序啟動的時候運行,直到小程序銷毀。這一行為類似 ServiceWorker,所以邏輯層也稱之為 App Service。

注意:小程序框架的邏輯層並非運行在瀏覽器中,因此 JavaScript 在 web 中一些能力都無法使用,如 windowdocument 等。

App(Object)注冊程序

App() 函數用來注冊一個小程序。接受一個 Object 參數,其指定小程序的生命周期回調等。

App() 必須在 app.js 中調用,必須調用且只能調用一次。不然會出現無法預期的后果。

 試着在index.js里面把Page()改成了App(),報了如下的錯:

 

不過這可能只是其中一種情況。

App(Object) ,Object參數說明:

 前台、后台定義: 當用戶點擊左上角關閉,或者按了設備 Home 鍵離開微信,小程序並沒有直接銷毀,而是進入了后台;當再次進入微信或再次打開小程序,又會從后台進入前台。需要注意的是:只有當小程序進入后台一定時間,或者系統資源占用過高,才會被真正的銷毀。

在基礎庫版本 1.4.0之后,小程序啟動會有兩種情況,一種是「冷啟動」,一種是「熱啟動」。 假如用戶已經打開過某小程序,然后在一定時間內再次打開該小程序,此時無需重新啟動,只需將后台態的小程序切換到前台,這個過程就是熱啟動;冷啟動指的是用戶首次打開或小程序被微信主動銷毀后再次打開的情況,此時小程序需要重新加載啟動。我當前使用的基礎庫是2.0.4 。

onLaunch(Object)

小程序初始化完成時觸發,全局只觸發一次。

關於onLaunch()、onShow()等的參數設置,參考 https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/app.html

對於getApp(Object)

  • 不要在定義於 App() 內的函數中調用 getApp() ,使用 this 就可以拿到 app 實例。
  • 通過 getApp() 獲取實例之后,不要私自調用生命周期函數。

場景值

即操作場景對應的數值,基礎庫 1.1.0 開始支持,低版本需做兼容處理

可以在 App 的 onLaunch 和 onShow 中獲取上述場景值,部分場景值下還可以獲取來源應用、公眾號或小程序的appId,詳見 。感覺用來后台統計數據會用得上。

Tip: 由於Android系統限制,目前還無法獲取到按 Home 鍵退出到桌面,然后從桌面再次進小程序的場景值,對於這種情況,會保留上一次的場景值。

具體參考 場景值。  

頁面 Page

Page(object),函數用來注冊一個頁面。接受一個 Object 類型參數,其指定頁面的初始數據、生命周期回調、事件處理函數等。

具體參考 注冊頁面

data

data 是頁面第一次渲染使用的初始數據。參考

生命周期回調函數

1、onLoad(Object query)

頁面加載時觸發。一個頁面只會調用一次,可以在 onLoad 的參數中獲取打開當前頁面路徑中的參數。

2、onShow()

3、onReady()

4、onHide()

5、onUnload()

參考

頁面事件處理函數

1、onPullDownRefresh()

2、onReachBottom()

3、onPageScroll(Object)

4、onPageScroll(Object)

5、onShareAppMessage(Object)

注意:只有定義了此事件處理函數,右上角菜單才會顯示“轉發”按鈕

 6、onTabItemTap(Object)

參考

組件事件處理函數

Page 中還可以定義組件事件處理函數。在渲染層的組件中加入事件綁定,當事件被觸發時,就會執行 Page 中定義的事件處理函數。

參考

Page.route

到當前頁面的路徑,類型為String

參考

Page.prototype.setData(Object data, Function callback)

setData 函數用於將數據從邏輯層發送到視圖層(異步),同時改變對應的 this.data 的值(同步)。在方法中使用

getAppInfo: function (e) {
      var appInfo = getApp().globalData;
      this.setData({
        userInfo:appInfo.userInfo.nickName
      })
    }

參考

頁面生命周期

頁面路由

在小程序中所有頁面的路由全部由框架進行管理。

頁面棧

框架以棧的形式維護了當前的所有頁面。 當發生路由切換的時候,頁面棧的表現如下:

路由方式 頁面棧表現
初始化 新頁面入棧
打開新頁面 新頁面入棧
頁面重定向 當前頁面出棧,新頁面入棧
頁面返回 頁面不斷出棧,直到目標返回頁
Tab 切換 頁面全部出棧,只留下新的 Tab 頁面
重加載 頁面全部出棧,只留下新的頁面

getCurrentPages()

  • 不要嘗試修改頁面棧,會導致路由以及頁面狀態錯誤。
  • 不要在 App.onLaunch 的時候調用 getCurrentPages(),此時 page 還沒有生成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM