本篇文章給大家?guī)砹岁P(guān)于微信小程序的相關(guān)知識,其中主要簡述微信小程序原理,小程序的邏輯層和渲染層是分開的,邏輯層運(yùn)行在JSCore中,并沒有一個完整瀏覽器對象,下面一起來看一下,希望對大家有幫助。
一、本質(zhì)
首先,小程序的邏輯層和渲染層是分開的,邏輯層運(yùn)行在 JSCore 中,并沒有一個完整瀏覽器對象。
所以就沒有相關(guān)的DOM API和BOM API,這一區(qū)別導(dǎo)致了前端開發(fā)非常熟悉的一些庫,例如 jQuery、 Zepto 等,在小程序中是無法運(yùn)行的。
同時 JSCore 的環(huán)境同 NodeJS 環(huán)境也是不盡相同,所以一些 NPM 的包在小程序中也是無法運(yùn)行的。
總之,js是單線程的,小程序是雙線程,邏輯層和視圖層(渲染層)是分開的,同時運(yùn)行的。
二、通信
又因?yàn)樾〕绦蚴请p線程的,任何邏輯層和視圖層的數(shù)據(jù)傳遞都是線程之間的通信,所以具有一定的延時,所以頁面的更新就成了異步操作。
異步會使得各部分的運(yùn)行時序變得復(fù)雜一些,比如在渲染首屏的時候,邏輯層與渲染層會同時開始初始化工作,但是渲染層需要有邏輯層的數(shù)據(jù)才能把界面渲染出來。
如果渲染層初始化工作較快完成,就要等邏輯層的指令才能進(jìn)行下一步工作。
所以小程序的生命周期就起了作用,如下
三、運(yùn)行機(jī)制
小程序啟動運(yùn)行兩種情況:
1、冷啟動(重新開始):用戶首次打開或者小程序被微信主動銷毀后再次打開的情況,此時小程序需要重新加載啟動,即為冷啟動。
2、熱啟動:用戶已經(jīng)打開過小程序,然后在一定時間內(nèi)再次打開該小程序,此時無需重新啟動,只需要將后臺態(tài)的小程序切換到前臺,這個過程就是熱啟動。