成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:說說微信小程序的實現原理?

開發 前端
網頁開發,渲染線程和腳本是互斥的,這也是為什么長時間的腳本運行可能會導致頁面失去響應的原因,本質就是我們常說的 JS 是單線程的。

[[431852]]

一、背景

網頁開發,渲染線程和腳本是互斥的,這也是為什么長時間的腳本運行可能會導致頁面失去響應的原因,本質就是我們常說的 JS 是單線程的

而在小程序中,選擇了 Hybrid 的渲染方式,將視圖層和邏輯層是分開的,雙線程同時運行,視圖層的界面使用 WebView 進行渲染,邏輯層運行在 JSCore 中

渲染層:界面渲染相關的任務全都在 WebView 線程里執行。一個小程序存在多個界面,所以渲染層存在多個 WebView 線程

邏輯層:采用 JsCore 線程運行 JS 腳本,在這個環境下執行的都是有關小程序業務邏輯的代碼

二、通信

小程序在渲染層,宿主環境會把wxml轉化成對應的JS對象

在邏輯層發生數據變更的時候,通過宿主環境提供的setData方法把數據從邏輯層傳遞到渲染層,再經過對比前后差異,把差異應用在原來的Dom樹上,渲染出正確的視圖

當視圖存在交互的時候,例如用戶點擊你界面上某個按鈕,這類反饋應該通知給開發者的邏輯層,需要將對應的處理狀態呈現給用戶

對于事件的分發處理,微信進行了特殊的處理,將所有的事件攔截后,丟到邏輯層交給JavaScript進行處理

由于小程序是基于雙線程的,也就是任何在視圖層和邏輯層之間的數據傳遞都是線程間的通信,會有一定的延時,因此在小程序中,頁面更新成了異步操作

異步會使得各部分的運行時序變得復雜一些,比如在渲染首屏的時候,邏輯層與渲染層會同時開始初始化工作,但是渲染層需要有邏輯層的數據才能把界面渲染出來

如果渲染層初始化工作較快完成,就要等邏輯層的指令才能進行下一步工作

因此邏輯層與渲染層需要有一定的機制保證時序正確,在每個小程序頁面的生命周期中,存在著若干次頁面數據通信

三、運行機制

小程序啟動運行兩種情況:

  • 冷啟動(重新開始):用戶首次打開或者小程序被微信主動銷毀后再次打開的情況,此時小程序需要重新加載啟動,即為冷啟動
  • 熱啟動:用戶已經打開過小程序,然后在一定時間內再次打開該小程序,此時無需重新啟動,只需要將后臺態的小程序切換到前臺,這個過程就是熱啟動

需要注意:

1.小程序沒有重啟的概念

2.當小程序進入后臺,客戶端會維持一段時間的運行狀態,超過一定時間后會被微信主動銷毀

3.短時間內收到系統兩次以上內存警告,也會對小程序進行銷毀,這也就為什么一旦頁面內存溢出,頁面會奔潰的本質原因了

開發者在后臺發布新版本之后,無法立刻影響到所有現網用戶,但最差情況下,也在發布之后 24 小時之內下發新版本信息到用戶

每次冷啟動時,都會檢查是否有更新版本,如果發現有新版本,將會異步下載新版本的代碼包,并同時用客戶端本地的包進行啟動,即新版本的小程序需要等下一次冷啟動才會應用上

參考文獻

https://developers.weixin.qq.com/community/develop/article/doc/0008a4c4f28f30fe3eb863b2750813

https://juejin.cn/post/6976805521407868958#heading-5

https://juejin.cn/post/6844903805675388942

 

https://juejin.cn/post/6844903999863259144#heading-1

 

責任編輯:武曉燕 來源: JS每日一題
相關推薦

2021-10-26 11:53:50

微信面試支付

2021-10-26 00:25:14

程序登錄流程

2021-10-27 10:27:36

微信小程序流程

2021-10-19 08:07:21

微信小程序代碼

2024-03-05 10:33:39

AOPSpring編程

2024-08-22 10:39:50

@Async注解代理

2024-02-29 16:49:20

volatileJava并發編程

2024-07-31 08:28:37

DMAIOMMap

2024-12-06 07:00:00

2024-03-14 14:56:22

反射Java數據庫連接

2024-08-29 16:30:27

2024-08-12 17:36:54

2024-03-22 06:56:24

零拷貝技術數據傳輸數據拷貝

2024-09-20 08:36:43

零拷貝數據傳輸DMA

2021-10-20 07:18:51

微信小程序函數

2021-10-21 07:18:02

微信程序方式

2024-03-28 10:37:44

IoC依賴注入依賴查找

2024-06-04 09:02:03

2025-02-28 00:00:00

2021-06-07 17:12:22

線程安全Atomic
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩精品一区二区天天拍 | 国产美女一区 | 欧美日韩中文国产一区发布 | 91 在线| 久草视频网站 | 国产欧美一区二区三区另类精品 | 天堂色| 狠狠干夜夜草 | 性一交一乱一透一a级 | 欧美国产91 | 中文字幕第一页在线 | 在线欧美小视频 | 日日草天天干 | 久久综合一区二区 | 美女天堂在线 | 97精品一区二区 | 日韩欧美在线视频观看 | 亚洲精品乱码 | 久色 | 九九亚洲精品 | 中国黄色毛片视频 | 欧美日韩专区 | 亚洲精品免费在线观看 | 亚洲欧美中文日韩在线v日本 | 在线日韩欧美 | 找个黄色片| 久久99精品久久久久久噜噜 | 男人天堂午夜 | 日本韩国欧美在线观看 | 日本国产精品视频 | 久久毛片 | 国产精品视频久久 | 超碰97免费在线 | 国产最新视频在线 | 日韩超碰在线 | 国产精品不卡视频 | 久久国产精品99久久久久 | 日韩精品在线一区 | 久操伊人 | 成人精品视频99在线观看免费 | 久久噜噜噜精品国产亚洲综合 |