分享最實用的技術,創(chuàng)造更大的價值

關于微信小程序的那些事

    微信,對于大家來說,已經(jīng)是很普及的一個應用,幾乎大街小巷的人,手里都會安裝一個叫微信的app,他能記錄我們的日常,支付我們的消費......,幾乎無所不能。

    而一談到微信,我們就不得不說微信上的小程序,微信小程序是一種不用下載,就可以使用的應用,自從2017年1月9日,張小龍在2017微信公開課上發(fā)布正式上線以來,就得到廣泛應用,小程序的應用數(shù)量超過了一百萬,覆蓋200多個細分領域,日活躍量達到兩個億以上。

     微信小程序這么強大功能的背后,到底都有些什么呢?現(xiàn)在我們來聊聊微信小程序的那些事兒。


小程序開發(fā)


微信小程序的運行機制是什么

    微信小程序把啟動分為兩種:冷啟動、熱啟動

    冷啟動就是第一次啟動小程序,或是小程序從被內存銷毀到再次啟動

    熱啟動就是用戶打開過小程序還沒有被銷毀,再打開小程序就只是把小程序直接從后臺切到前端顯示。而對于小程序銷毀的時機是什么時候呢?我們研究過:小程序切到后臺后,五分鐘內就會被微信主動銷毀,而在iOS下如果五秒內超過1次的內存告警,就會被銷毀。

對于用戶來說,如果手動在小程序列表中刪除小程序,需要調用App.js里面的函數(shù),包括的函數(shù)有: 


onLaunch() ,小程序初始化應用對象時調用一次,即每次冷啟動的時候會調用一次,熱啟動不會被調用

onShow(),小程序從后臺進入前臺時調用

onHide() ,小程序從前臺進入后臺時調用 

onError() ,小程序發(fā)生腳本錯誤,或是調用微信api失敗時觸發(fā)。

onPageNotFound() ,當訪問小程序不存的頁面時,該頁面會被觸發(fā),一般在里面寫一些404跳轉頁面

每個頁面對象里的生命周期回調函數(shù)及默認事件處理函數(shù)有:

onPullDownRefresh() ,即當用戶下拉時觸發(fā),要在app.json的window選項中或頁面配置中開啟enablePullDownRefresh才有效哈

onReachBottom() ,監(jiān)聽用戶上拉觸底事件,可以在app.json的window選項中或頁面配置中設置觸發(fā)距離onReachBottomDistance

onPageScroll() ,監(jiān)聽滑動頁面事件,切記切記別在此方法里過于頻繁執(zhí)行setData

onShareAppMessage() ,監(jiān)聽用戶點擊分享時,自定義分享的標題內容

onResize() ,小程序屏幕旋轉時觸發(fā)?;A庫 2.4.0 開始支持哈

onTabItemTap() ,點擊 tab(即底部菜單欄) 時觸發(fā),基礎庫 1.9.0 開始支持

onLoad() ,面加載時觸發(fā), 只在頁面第一次加載時觸發(fā)

onShow() ,頁面從后臺切入前臺時觸發(fā),頁面初始化時觸發(fā)

onReady(),頁面初次渲染完成時觸發(fā),只觸發(fā)一次

onHide(),頁面從前臺切入后臺時觸發(fā)

onUnload(),頁面卸載時觸發(fā),即redirectTo或navigateBack到其他頁面時觸發(fā)

以上是APP.js中關于小程序的接口函數(shù),如果微信小程序要跳轉H5,必須現(xiàn)在微信小程序中嵌入一個web-view的組件。而且必須是已經(jīng)打開了的WebView,不可以跳轉到外部的H5頁。目前 H5 頁不可跳小程序,只有在小程序以 web-view 組件打開的 H5 里才可以跳回到小程序,并后H5的地址,還必須在小程序的管理后臺,手動添加到白名單。而且這個白名單地址可以是任意可訪問的地址。 


App 可以跳轉到小程序,小程序只能被動跳轉到 App,不可主動跳轉到 App。被動是指只有當 App 主動跳入小程序,小程序才可以跳回到 App。


微信小程序的渲染方式為 WebView,而非原生渲染,只有 <canvas/>、<video/>、<map/>、<textarea/>、<input>、<live-pusher>、<live-player> 幾個組件才是原生渲染。


微信小程序目前統(tǒng)一使用 rpx 單位來隔離機器之間屏幕大小的差異,以達到適配,讓開發(fā)者更加專注業(yè)務。


目前一個小程序不可超過 2M,如果小程序做了分包,則所有包加起來不可超過 8M,每個包不可超過 2M。


微信開發(fā)者工具下 JS 是跑在 Node-Webkit 內核,iOS 下是跑在 JSCore 內核,安卓下是跑在 X5 內核。


iOS 下大圖和長列表圖都會導致 WKWebView 被回收。


同一個微信用戶,同一個小程序 storage 上限為 10MB,如果存儲空間不足,會自動清除掉最久沒使用的數(shù)據(jù);本地緩存文件和用戶文件普通小程序上限 10M,游戲小程序上限 50M。


wx.request、wx.uploadFile、wx.downloadFile 默認超時時間和最大超時時間都是 60s,最大并發(fā)限制是 10 個,網(wǎng)絡請求的 Referer header 不可設置。其格式固定為 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 為微信小程序的 AppID,{version} 為小程序的版本號。版本號為 0 表示為開發(fā)版、體驗版及審核版本,版本號為 devtools 表示為開發(fā)者工具,其余為正式版本。


在寫頁面的時候,如果頁面上有倒計時功能,在微信小程序 onHide 后沒有停掉倒計時,在 iPhone 下就會觸發(fā)內存不夠,微信小程序被回收;而再把微信小程序切回到前臺界面上,微信小程序又沒有重新渲染,從而導致白屏。建議在 onHide 里及時結束倒計時,onShow 里再重新啟動。

小程序運行的流程

    成都微信小程序開發(fā)團隊認為,在當今,微信小程序開發(fā)的技能,是需要我們開發(fā)人員掌握的基本技能,掌握了該基本技能,才能適應市場的需求。而微信小程序的開發(fā),對于開發(fā)人員來說,這項技能掌握起來也是十分快速的。


聯(lián)系
QQ
電話
咨詢電話:189-8199-7898
TOP