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

        淺析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號
        主站蜘蛛池模板: 国产精品第一页在线| 久久成人精品视频| 久久精品成人国产午夜| 乱人伦人妻精品一区二区| 久久这里有精品视频| 欧美精品成人3d在线| 国语自产拍精品香蕉在线播放| 最新国产精品精品视频| 日韩精品极品视频在线观看免费| 久久精品国产精品亚洲毛片| 国产午夜福利精品一区二区三区 | 国产99精品一区二区三区免费| 日韩精品免费在线视频| 精品久久久久久国产免费了| 亚洲午夜精品久久久久久浪潮 | 精品国产不卡一区二区三区| 日韩蜜芽精品视频在线观看| 日本VA欧美VA欧美VA精品| 久久精品一区二区三区中文字幕| 亚洲精品免费视频| 国产精品高清一区二区人妖| 精品国产综合区久久久久久| 亚洲嫩草影院久久精品| 精品免费tv久久久久久久| 92国产精品午夜福利| 久久国产美女免费观看精品 | 国产高清国产精品国产专区| 国产精品免费大片| 国产精品日韩欧美久久综合| 久久国产精品国语对白| 好湿好大硬得深一点动态图91精品福利一区二区 | 日韩精品成人亚洲专区| 久久99国产精品成人欧美| 国产精品手机在线观看你懂的 | 欧美激情精品久久久久久久九九九| 国产三级精品三级在线观看专1| 91嫩草亚洲精品| 亚洲国产精品无码久久久秋霞2| 四虎国产精品免费入口| 日本精品卡一卡2卡3卡四卡| 亚洲精品成人无码中文毛片不卡|