站長資訊網
最全最豐富的資訊網站

淺析Angular中的Change Detection機制

淺析Angular中的Change Detection機制

前端(vue)入門到精通課程,老師在線輔導:聯系老師
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

什么是 Change Detection ?

在應用的開發過程中,state 代表需要顯示在應用上的數據。當 state 發生變化時,往往需要一種機制來檢測變化的 state 并隨之更新對應的界面。這個機制就叫做 Change Detection 機制。【相關教程推薦:《angular教程》】

在 WEB 開發中,更新應用界面其實就是對 DOM 樹進行修改。由于 DOM 操作是昂貴的,所以一個效率低下的 Change Detection 會讓應用的性能變得很差。因此,框架在實現 Change Detection 機制上的高效與否,很大程度上決定了其性能的好壞。

Change Detection 是如何實現的

Angular 可以檢測組件數據何時更改,然后自動重新渲染視圖以反映該更改。但是在像點擊按鈕這樣的低級事件之后,它怎么能做到這一點呢?

通過 Zone , Angular 能夠實現自動的觸發 Change Detection 機制

Zone 是什么呢?簡而言之,Zone 是一個執行上下文(execution context),可以理解為一個執行環境。與常見的瀏覽器執行環境不同,在這個環節中執行的所有異步任務都被稱為 Task ,Zone 為這些 Task 提供了一堆的鉤子(hook),使得開發者可以很輕松的「監控」環境中所有的異步任務。

題外話:由于 Angular 極力的推崇使用可觀察對象(Observable),如果完全的基于 Observable 來開發應用,可以代替 Zone 來實現追蹤調用棧的功能,且性能還比使用 Zone 會稍好一些。

  // Angular 在 v5.0.0-beta.8 起可以通過配置不使用 Zone    import { platformBrowser } from '@angular/platform-browser';   platformBrowser().bootstrapModuleFactory(AppModuleNgFactory, { ngZone: 'noop' });
登錄后復制

覆蓋瀏覽器默認機制

Angular 在啟動時會重寫瀏覽器 low-level API,例如addEventListener,它是用于注冊所有瀏覽器事件的瀏覽器函數,包括點擊處理。Angular 將替換addEventListener為與此等效的新版本:

// this is the new version of addEventListener                                     function addEventListener(eventName, callback) {      // call the real addEventListener                     callRealAddEventListener(eventName, function() {          //first call the original callback                       callback(...);         // and then run Angular-specific functionality         var changed = angular.runChangeDetection();         if (changed) {             angular.reRenderUIPart();         }     }); }
登錄后復制

新的addEventListener為任何事件處理程序添加了

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产馆精品推荐在线观看| 国产成人精品免费午夜app| 97久久精品亚洲中文字幕无码| 久久人人爽人人精品视频 | 久久er国产精品免费观看8| 日韩亚洲人成在线| 中文字幕亚洲综合精品一区| 青青草国产精品久久久久| 亚洲精品日韩专区silk| 国产精品亚洲专一区二区三区| 亚洲AV无码精品国产成人| 国产成人愉拍精品| 久久国产成人精品麻豆| 强制高潮18XXXXHD日韩| 国产一区二区三区国产精品 | 国产乱人伦偷精精品视频| 国产精品无码一区二区在线| 久久99国产精品99久久| 国内精品99亚洲免费高清| 国产精品偷伦视频免费观看了| 狼色精品人妻在线视频免费| 无码专区人妻系列日韩精品少妇| 四虎成人精品无码永久在线| 国产精品videossex另类| 日韩在线视精品在亚洲| 日韩精品国产一区| 国产精品100页| 日韩视频中文字幕精品偷拍| 国产日韩久久久精品影院首页 | 亚洲国产综合91精品麻豆| 无码人妻精品一区二区三18禁| 久热中文字幕在线精品首页| 久久久久亚洲精品无码系列| 久久久久亚洲精品无码系列| 99久久综合精品国产| 在线观看日韩精品| 精品国产污污免费网站aⅴ| 国产精品网站在线观看免费传媒| 热99RE久久精品这里都是精品免费| 国产综合精品蜜芽| 国产精品露脸国语对白|