偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一文帶你弄懂Flutter的熱部署

開發(fā) 前端
Dart在開發(fā)過程中使用JIT,每次更改都不需要在編譯成字節(jié)碼,節(jié)省了大量時(shí)間,在部署中使用AOT生成高效的ARM代碼保證高效的性能,所以說Dart具有運(yùn)行速度快,執(zhí)行性能好的特點(diǎn)。

關(guān)于Dart中的運(yùn)行方式

  • JIT:Just In Time . 動(dòng)態(tài)解釋,一邊翻譯一邊執(zhí)行,也稱為即時(shí)編譯,如JavaScript,Python等,在開發(fā)周期中使用,可以動(dòng)態(tài)下發(fā)和執(zhí)行代碼,開發(fā)測試效率高,但是運(yùn)行速度和性能則會(huì)受到影響,F(xiàn)lutter中的熱重載正是基于此特性
  • AOT: Ahead of Time. 靜態(tài)編譯,是指程序在執(zhí)行前全部被翻譯為機(jī)器碼,提前編譯,如 C ,C++ ,OC等,發(fā)布時(shí)期使用AOT,就不需要像RN那樣在跨平臺(tái)JavaScript代碼和原生Android、iOS代碼間建立低效的方法調(diào)用映射關(guān)系。

程序的運(yùn)行方式和具體的語言沒有強(qiáng)制關(guān)系,比如python,既可以是JIT 也可以是AOT,Dart是少數(shù)同時(shí)支持JIT和AOT的語言之一。

Dart在開發(fā)過程中使用JIT,每次更改都不需要在編譯成字節(jié)碼,節(jié)省了大量時(shí)間,在部署中使用AOT生成高效的ARM代碼保證高效的性能,所以說Dart具有運(yùn)行速度快,執(zhí)行性能好的特點(diǎn)。

Hot Reload

在Dart代碼文件中修改字符串“Hello, World”,添加一個(gè)驚嘆號(hào),點(diǎn)擊保存或者熱刷新按鈕就可以立即更新到界面上,僅需幾百毫秒:

Flutter通過將新的代碼注入到正在運(yùn)行的DartVM中,來實(shí)現(xiàn)Hot Reload這種神奇的效果,在DartVM將程序中的類結(jié)構(gòu)更新完成后,F(xiàn)lutter會(huì)立即重建整個(gè)控件樹,從而更新界面。但是熱刷新也有一些限制,并不是所有的代碼改動(dòng)都可以通過熱刷新來更新:

  1. 編譯錯(cuò)誤,如果修改后的Dart代碼無法通過編譯,F(xiàn)lutter會(huì)在控制臺(tái)報(bào)錯(cuò),這時(shí)需要修改對(duì)應(yīng)的代碼。
  2. 控件類型從StatelessWidgetStatefulWidget的轉(zhuǎn)換,因?yàn)镕lutter在執(zhí)行熱刷新時(shí)會(huì)保留程序原來的state,而某個(gè)控件從stageless→stateful后會(huì)導(dǎo)致Flutter重新創(chuàng)建控件時(shí)報(bào)錯(cuò)“myWidget is not a subtype of StatelessWidget”,而從stateful→stateless會(huì)報(bào)錯(cuò)“type ‘myWidget’ is not a subtype of type ‘StatefulWidget’ of ‘newWidget’”。
  3. 全局變量和靜態(tài)成員變量,這些變量不會(huì)在熱刷新時(shí)更新。
  4. 修改了main函數(shù)中創(chuàng)建的根控件節(jié)點(diǎn),F(xiàn)lutter在熱刷新后只會(huì)根據(jù)原來的根節(jié)點(diǎn)重新創(chuàng)建控件樹,不會(huì)修改根節(jié)點(diǎn)。
  5. 某個(gè)類從普通類型轉(zhuǎn)換成枚舉類型,或者類型的泛型參數(shù)列表變化,都會(huì)使熱刷新失敗。

熱刷新無法實(shí)現(xiàn)更新時(shí),執(zhí)行一次熱重啟(Hot Restart)就可以全量更新所有代碼,同樣不需要重啟App,區(qū)別是restart會(huì)將所有Dart代碼打包同步到設(shè)備上,并且所有狀態(tài)都會(huì)重置。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-03-27 17:58:34

MySQL加鎖間隙鎖

2023-09-18 08:02:45

CSS布局屬性

2023-10-26 16:27:50

前端 WebCSS開發(fā)

2022-08-03 08:01:16

CDN網(wǎng)站服務(wù)器

2023-12-12 07:31:51

Executors工具開發(fā)者

2023-04-04 08:01:47

2022-09-05 09:25:53

KubernetesService

2022-09-09 10:00:13

KubernetesConfigMap

2024-10-16 10:11:52

2023-03-31 08:16:53

Flutter優(yōu)化內(nèi)存管理

2022-08-09 09:10:43

Kubernetes容器

2023-11-28 09:31:55

MySQL算法

2021-06-02 05:43:36

比特幣虛擬貨幣區(qū)塊鏈

2024-05-09 10:11:30

2022-09-01 08:01:56

Pythongunicorn

2023-12-21 17:11:21

Containerd管理工具命令行

2022-12-20 07:39:46

2023-11-20 08:18:49

Netty服務(wù)器

2023-07-31 08:18:50

Docker參數(shù)容器

2021-05-29 10:11:00

Kafa數(shù)據(jù)業(yè)務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)