自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文帶你弄懂Flutter的熱部署

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

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

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

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

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

Hot Reload

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

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

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

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

責(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

2024-10-16 10:11:52

2022-09-09 10:00:13

KubernetesConfigMap

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ū)塊鏈

2022-09-01 08:01:56

Pythongunicorn

2024-05-09 10:11:30

2022-12-20 07:39:46

2023-11-20 08:18:49

Netty服務(wù)器

2023-12-21 17:11:21

Containerd管理工具命令行

2023-11-06 08:16:19

APM系統(tǒng)運維

2021-05-29 10:11:00

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

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