首頁 web前端 前端問答 angular髒值偵測與vue資料劫持的差異是什麼

angular髒值偵測與vue資料劫持的差異是什麼

Dec 16, 2020 pm 04:27 PM
angular vue

區別:1、angular髒值偵測原理上支援低階IE,理論上相容性較好;vue資料劫持需要支援ES5的瀏覽器。 2.angular髒值偵測適合大數據量的更新;vue資料劫持適合小資料量的更新。

angular髒值偵測與vue資料劫持的差異是什麼

相關推薦:《angular教學》、《vue.js教學

實作資料綁定的做法大致有以下幾種:

  • #發佈者-訂閱者模式(backbone.js)

  • 髒值檢查(angular.js)

  • 資料劫持(vue.js)

angular中的髒值偵測

angular.js 是透過髒值偵測的方式比對資料是否有變更,來決定是否更新視圖,最簡單的方式就是透過setInterval() 定時輪詢偵測資料變動,當然Google不會這麼low,angular只有在指定的事件觸發時進入髒值檢測,大致如下:

  • #DOM事件,譬如用戶輸入文本,點擊按鈕等。 ( ng-click )

  • XHR回應事件( $http )

  • 瀏覽器Location變更事件( $location )

  • #Timer事件( interval )

  • 執行apply()

##優缺點

  • 原理上支援低階IE(記得最早的NG支援IE8),理論上兼容性更好

  • #適合大數據量的更新, CPU層面的時間複雜度為O(VModel),小量更新的diff有運算浪費

  • 可考慮配合類別Immutable.js的輪子與思想優化,類似React Redux Immer

  • 需要手動調用,同setState,引入Zone.js後方便一些,大顆粒度更新都有這個問題

vue中的資料劫持

資料劫持主要透過ES5 提供的Object.defineProperty方法來實現,監控對資料的操作,從而可以自動觸發資料同步。並且,由於是在不同的資料上觸發同步,可以精確的將變更發送給綁定的視圖,而不是對所有的資料都執行一次檢測。

資料與視圖的綁定與同步,最終體現在資料的讀寫處理過程中,也就是 Object.defineProperty() 定義的資料 set、get 函數中。

優缺點

  • 使用JavaScript原生特性,但也需要支援ES5的瀏覽器,畢竟前端面向未來編程,所以Vue 3計畫升級到ES6的Proxy實現

  • 適合小資料量(細顆粒度)的更新,CPU層面的時間複雜度為O(Change),代價是更多的記憶體佔用(空間換時間)

  • 減少依賴收集的顆粒度(從關心某屬性變了,改為只關心某個物件變了)能優化記憶體問題

  • 其實Vue 2就是透過引進Virtual DOM,改為在子元件層面用diff的方式更新

兩者差異


##angular髒值偵測原理上支援低階IE(記得最早的NG支援IE8),理論上相容性較好;而vue資料劫持需要支援ES5的瀏覽器。

angular髒值偵測適合大數據量的更新;而vue資料劫持適合小資料量(細顆粒度)的更新。

相關推薦:

######2020年前端vue面試題大匯總(附答案)############vue教程推薦:2020最新的5個vue.js影片教學精選############更多程式相關知識,請造訪:###程式設計入門###! ! ######

以上是angular髒值偵測與vue資料劫持的差異是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

vue怎麼給按鈕添加函數 vue怎麼給按鈕添加函數 Apr 08, 2025 am 08:51 AM

可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

vue中的watch怎麼用 vue中的watch怎麼用 Apr 07, 2025 pm 11:36 PM

Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

vue多頁面開發是啥意思 vue多頁面開發是啥意思 Apr 07, 2025 pm 11:57 PM

Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。

vue返回上一頁的方法 vue返回上一頁的方法 Apr 07, 2025 pm 11:30 PM

Vue.js 返回上一頁有四種方法:$router.go(-1)$router.back()使用 <router-link to="/"> 組件window.history.back(),方法選擇取決於場景。

vue.js怎麼引用js文件 vue.js怎麼引用js文件 Apr 07, 2025 pm 11:27 PM

在 Vue.js 中引用 JS 文件的方法有三種:直接使用 <script> 標籤指定路徑;利用 mounted() 生命週期鉤子動態導入;通過 Vuex 狀態管理庫進行導入。

vue遍歷怎麼用 vue遍歷怎麼用 Apr 07, 2025 pm 11:48 PM

Vue.js 遍歷數組和對像有三種常見方法:v-for 指令用於遍歷每個元素並渲染模板;v-bind 指令可與 v-for 一起使用,為每個元素動態設置屬性值;.map 方法可將數組元素轉換為新數組。

vue的div怎麼跳轉 vue的div怎麼跳轉 Apr 08, 2025 am 09:18 AM

Vue 中 div 元素跳轉的方法有兩種:使用 Vue Router,添加 router-link 組件。添加 @click 事件監聽器,調用 this.$router.push() 方法跳轉。

See all articles