代碼生命周期就是一個對象的生老病死,通常指程序從創(chuàng)建、開始、暫停、喚起、停止、卸載的過程。小程序的生命周期又可分為應(yīng)用生命周期和頁面的生命周期,先單獨分析,在結(jié)合兩者分析
應(yīng)用生命周期
應(yīng)用生命周期指得是小程序本身的初始化加載、方法以及最終被銷毀的過程。
在上面提到的前臺和后臺,給出的解釋是:用戶點擊右上角關(guān)閉、按home健離開微信返回主頁,這些情況屬于小程序進(jìn)入后臺但沒有直接銷毀,只有在小程序進(jìn)入后臺一段時間,或者系統(tǒng)資源占用過高的情況才會被銷毀,就是說小程序的銷毀是需要額外的條件,而非是直接進(jìn)入后臺就銷毀;當(dāng)再次打開微信或打開小程序就稱為從后臺進(jìn)入前臺;
頁面的生命周期
小程序的頁面生命周期是指程序內(nèi)部某個頁面從進(jìn)入到離開或某個頁面到另一個頁面的過程
wx.navigateTo跳轉(zhuǎn)狀態(tài)下,頁面A和頁面B的生命周期邏輯
應(yīng)用生命周期和頁面生命周期
開源框架
1、 mpvue
mpvue 是美團(tuán)點評開源的一個使用 Vue.js 開發(fā)小程序的前端框架??蚣芑?Vue.js 核心,mpvue 修改了 Vue.js 的 runtime 和 compiler 實現(xiàn),使其可以運行在小程序環(huán)境中,從而為小程序開發(fā)引入了整套 Vue.js 開發(fā)體驗。使用 mpvue 開發(fā)小程序,你將在小程序技術(shù)體系的基礎(chǔ)上獲取到這樣一些能力:
官網(wǎng):mpvue-docs
2、Tina.js
Tina.js 一款輕巧的漸進(jìn)式微信小程序框架。
特性: 輕盈小巧。 極易上手,保留 MINA (微信小程序官方框架) 的大部分 API 設(shè)計;無論你有無小程序開發(fā)經(jīng)驗,都可以輕松過渡上手。 漸進(jìn)增強(qiáng),既有狀態(tài)管理器,也有路由增強(qiáng),還可以自己編寫插件。
3、Taro
Taro 是由京東 - 凹凸實驗室打造的一套遵循 React 語法規(guī)范的多端統(tǒng)一開發(fā)框架。我要沒記錯的話,是最近剛剛開源的。
使用 Taro,我們可以只書寫一套代碼,再通過 Taro 的編譯工具,將源代碼分別編譯出可以在不同端(微信小程序、H5、App 端等)運行的代碼。同時 Taro 還提供開箱即用的語法檢測和自動補(bǔ)全等功能,有效地提升了開發(fā)體驗和開發(fā)效率。
官網(wǎng):Taro - A set of multi-end development solutions that follow the React grammar specification.
4、wepy
WePY 是一款讓小程序支持組件化開發(fā)的框架,通過預(yù)編譯的手段讓開發(fā)者可以選擇自己喜歡的開發(fā)風(fēng)格去開發(fā)小程序??蚣艿募?xì)節(jié)優(yōu)化,Promise,Async Functions 的引入都是為了能讓開發(fā)小程序項目變得更加簡單,高效。
特性:
官網(wǎng):https://tencent.github.io/wepy
5、weweb
weweb 是一個兼容小程序語法的前端框架,你可以用小程序的寫法,來寫 web 應(yīng)用。如果你已經(jīng)有小程序了,通過它你可以將你的小程序運行在瀏覽器中。
特性: 跨平臺,一套代碼多端運行(小程序、h5、未來直接打包成安卓、ios app 也不是夢) 自帶常用組件,完美繼承了小程序內(nèi)置組件 兼容小程序 rpx 語法,使頁面更容易適配各種機(jī)型
5、Touch WX
Touch WX 是一套完全免費的微信小程序開發(fā)框架,包含豐富的 UI 控件用于官方組件的補(bǔ)充。
特點如下:
這套框架的原理是:
將 Touch WX 工程中所寫的代碼進(jìn)行編譯,直接輸出為微信小程序工程原始代碼。擴(kuò)充的 30 多種組件,完全是基于小程序官方的自定義組件機(jī)制實現(xiàn)(row&col 除外)。
所以它支持小程序的全部語法,怎么開發(fā)小程序,就怎么開發(fā) Touch WX。
不過因為是單文件的開發(fā)方式,在文件的代碼結(jié)構(gòu)上稍有不同。請注意這一點。
這樣好處在于:
組件庫
還有各種開源的組件庫,比如有以下這幾個:
有贊的 zanui-weapp 和 iview 這兩個比較出名。
微信小程序的相關(guān)文件類型
注:
封裝微信小程序的數(shù)據(jù)請求
參數(shù)傳值的方法
提高微信小程序的應(yīng)用速度
小程序與原生App比較
程序除了擁有公眾號的低開發(fā)成本、低獲客成本低以及無需下載等優(yōu)勢,在服務(wù)請求延時與用戶使用體驗是都得到了較大幅度 的提升,使得其能夠承載跟復(fù)雜的服務(wù)功能以及使用戶獲得更好的用戶體驗。
微信小程序原理
微信小程序采用JavaScript、WXML、WXSS三種技術(shù)進(jìn)行開發(fā),從技術(shù)講和現(xiàn)有的前端開發(fā)差不多,但深入挖掘的話卻又有所不同。
JavaScript:首先JavaScript的代碼是運行在微信App中的,并不是運行在瀏覽器中,因此一些H5技術(shù)的應(yīng)用,需要微信App提供對應(yīng)的API支持,而這限制住了H5技術(shù)的應(yīng)用,且其不能稱為嚴(yán)格的H5,可以稱其為偽H5,同理,微信提供的獨有的某些API,H5也不支持或支持的不是特別好。
WXML:WXML微信自己基于XML語法開發(fā)的,因此開發(fā)時,只能使用微信提供的現(xiàn)有標(biāo)簽,HTML的標(biāo)簽是無法使用的。
WXSS:WXSS具有CSS的大部分特性,但并不是所有的都支持,而且支持哪些,不支持哪些并沒有詳細(xì)的文檔。
微信的架構(gòu),是數(shù)據(jù)驅(qū)動的架構(gòu)模式,它的UI和數(shù)據(jù)是分離的,所有的頁面更新,都需要通過對數(shù)據(jù)的更改來實現(xiàn)。
小程序分為兩個部分webview和appService。其中webview主要用來展現(xiàn)UI,appService有來處理業(yè)務(wù)邏輯、數(shù)據(jù)及接口調(diào)用。它們在兩個進(jìn)程中運行,通過系統(tǒng)層JSBridge實現(xiàn)通信,實現(xiàn)UI的渲染、事件的處理
微信小程序的優(yōu)劣勢
優(yōu)勢:
1、無需下載,通過搜索和掃一掃就可以打開。
2、良好的用戶體驗:打開速度快。
3、開發(fā)成本要比App要低。
4、安卓上可以添加到桌面,與原生App差不多。
5、為用戶提供良好的安全保障。小程序的發(fā)布,微信擁有一套嚴(yán)格的審查流程, 不能通過審查的小程序是無法發(fā)布到線上的。
劣勢:
1、限制較多。頁面大小不能超過1M。不能打開超過5個層級的頁面。
2、樣式單一。小程序的部分組件已經(jīng)是成型的了,樣式不可以修改。例如:幻燈片、導(dǎo)航。
3、推廣面窄,不能分享朋友圈,只能通過分享給朋友,附近小程序推廣。其中附近小程序也受到微信的限制。
4、依托于微信,無法開發(fā)后臺管理功能。
微信小程序與H5的區(qū)別
第一條是運行環(huán)境的不同
傳統(tǒng)的HTML5的運行環(huán)境是瀏覽器,包括webview,而微信小程序的運行環(huán)境并非完整的瀏覽器,是微信開發(fā)團(tuán)隊基于瀏覽器內(nèi)核完全重構(gòu)的一個內(nèi)置解析器,針對小程序?qū)iT做了優(yōu)化,配合自己定義的開發(fā)語言標(biāo)準(zhǔn),提升了小程序的性能。
第二條是開發(fā)成本的不同
只在微信中運行,所以不用再去顧慮瀏覽器兼容性,不用擔(dān)心生產(chǎn)環(huán)境中出現(xiàn)不可預(yù)料的奇妙BUG
第三條是獲取系統(tǒng)級權(quán)限的不同
系統(tǒng)級權(quán)限都可以和微信小程序無縫銜接
第四條便是應(yīng)用在生產(chǎn)環(huán)境的運行流暢度
長久以來,當(dāng)HTML5應(yīng)用面對復(fù)雜的業(yè)務(wù)邏輯或者豐富的頁面交互時,它的體驗總是不盡人意,需要不斷的對項目優(yōu)化來提升用戶體驗。但是由于微信小程序運行環(huán)境獨立
小程序的雙向綁定和vue的區(qū)別
小程序直接this.data的屬性是不可以同步到視圖的,必須調(diào)用:this.setData
小程序的異步請求問題