當前位置:編程學習大全網 - 編程語言 - 角度動態設置禁用

角度動態設置禁用

如果之前用AngularJS(第壹代Angular框架)編程,可能會用$compile service生成HTML,連接到數據模型得到雙向綁定功能:

const template = '動態生成:{ { name } } ' const linkFn = $ compile(template);const數據模型= $scope。$ new();dataModel.name = ' dynamic//將數據模型鏈接到templatelinkFn(data model);

AngularJS中的指令可以通過多種方式修改DOM,但是框架無法感知修改了什麽。這種方法帶來的問題和任何動態環境下的問題是壹樣的,很難優化性能。當然,動態模板不是AngularJS性能慢的罪魁禍首,但也是重要原因之壹。

看了壹段時間Angular內部代碼,發現這個新設計的框架非常重視性能。妳會經常在Angular源代碼中找到這些句子(註:為了理解清楚,不翻譯):

註意:向其中添加字段會影響性能!

註意:我們對所有節點使用壹種類型,以便在ViewDefinition的所有節點上循環的循環保持單態!

出於性能原因,我們希望每五秒鐘檢查並更新壹次列表。

因此,Angular的設計者決定犧牲靈活性來實現更大的性能提升,比如引入JIT和AOT編譯器以及靜態模板、指令/模塊工廠和ComponentFactory解析器。對於AngularJS社區來說,這些概念是陌生的,甚至是充滿敵意的,但是不要擔心,如果妳之前只是聽說過這些概念,但是現在妳想知道它們是什麽,閱讀這篇文章會讓妳覺得有所啟發。

註意:其實JIT/AOT編譯器指的是同壹個編譯器,只是這個編譯器用在構建時階段或者運行時階段。

至於工廠,是Angular Compiler把妳寫的組件,比如a.component.ts,編譯成a.component.ngfactory.js,也就是編譯器以@ ComponentDecoder為原料,把妳寫的組件/指令類編譯成另壹個工廠類。

回到JIT/AOT編譯器,如果在構建階段生成了壹個. component.ngfactory.js,那就是AOT編譯器,這個編譯器不會打包到依賴包中;如果是在運行階段生成的,編譯器需要打包成壹個依賴包,由用戶本地下載。運行時,編譯器會編譯組件/指令類,生成對應的視圖工廠類,僅此而已。下面就來看看這些*.ngfactory.js文件代碼是什麽樣子的。

至於工廠解析器,就更簡單了,就是壹個對象,通過它可以獲得編譯後的工廠對象。

  • 上一篇:天津快捷酒店排名天津快捷酒店查詢
  • 下一篇:不同國家的程序員
  • copyright 2024編程學習大全網