初識vue3的框架原理


Vue (讀音 /vjuː/,類似於 view) 一套 基於MVVM模式的用戶構造用戶界面的js框架,他是以數據驅動和組件化的思想構建,Vue是由尤雨溪開發,他於2013-12-7發布了vue的0.6.0版本,2015-10-26發布了1.0.0版本,2020-9-18發布了3版本 代號為One Piece,

一、漸進式框架 

是一套用於構建用戶界面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用

 

最核心的部分是聲明式渲染,向外組件系統,在這個基礎上再加入前端路由和狀態管理,最外層是構建系統。

  • 假如你的系統比較簡單,更多的是需要訪問界面的DOM節點,以獲取用戶輸入數據或將更新后的數據渲染到視圖中,那么可以將vue.js 作為一個JS庫來使用,使用它的聲明式渲染機制可以輕松地操作DOM,實現數據編號時的自動視圖渲染。
  • 如果前端界面比較負責,那么可以考慮將界面元素組件化,利用vue的組建系統將界面元素和業務邏輯包裝為一個個組件,采用分而治之策略,不但可以降低前端系統復雜性,組件本身還可以復用。
  • 如果要求前端后端分離,將前端做成單頁面應用程序,那么可以引入前端路由vue Router,實現單頁面應用。如果前端應用中有很多數據需要在多個組件間共享,如用戶數據,那么可以引入vueX統一對狀態進行管理。
  • vue提供的構建系統可以輕松搭建一個腳手架項目。項目內置了運行環境,便於開發,調試並觀察程序的運行結果,此外,項目也集成了webpack打包工具,可以很容易地構建發布版本。
  • Vue 的核心庫只關注視圖層,不僅易於上手,還便於與第三方庫或既有項目整合。 另一方面,當與現代化的工具鏈以及各種支持類庫結合使用時,Vue 也完全能夠為復雜的單頁應用提供驅動。

二、響應式系統 

MVVM模式最核心的特性就是數據雙向綁定,Vue構建了一套響應式系統,可以實現用聲明方式的綁定數據,從而在數據發送編號時自動渲染視圖。

1.  vue 2.X是通過Object.defineProperty()來實現數據劫持的,對data的每個屬性進行了get、set的攔截。

Object.defineProperty( )是用來做什么的?它可以來控制一個對象屬性的一些特有操作,比如讀寫權、是否可以枚舉,這里我們主要先來研究下它對應的兩個描述屬性get和set,如果還不熟悉其用法,請點擊這里閱讀更多用法

 

 

如果還不熟悉vue2響應原理的用法,可以閱讀vue2響應式原理

 

2. Vue2.X 是利用 Oject.defineProperty() 方法偵測對象的屬性編號,但該方法有一些固有的缺陷;

  • 性能差
  • 對象新增屬性無法被偵測
  • 改變數組的lengh屬性無法被偵測。

Vue3.0 使用ES6 的Proxy 取代 Object.defineProperty()方法,性能更優異,而且數據和對象一樣,可以直接出發get()和 set()方法。Proxy稱為代理,一種可以攔截並改變底層 Js引擎操作的包裝器。

調用 new Proxy(target, handler)可以為一個目標對象創建一個代理,代理可以攔截Js引擎內部目標的底層對象操作,這些底層操作被攔截后出發響應特定操作的陷阱函數,在調佣Proxy構造函數時,需要傳入兩個參數,target 為目標對象,handler是一個包含陷阱函數的處理器對象。

 

相比於vue2.x,使用proxy的優勢如下>相比於vue2.x,使用proxy的優勢如下:

  • defineProperty只能監聽某個屬性,不能對全對象監聽
  • 可以省去for in、閉包等內容來提升效率(直接綁定整個對象即可)
  • 可以監聽數組,不用再去單獨的對數組做特異性操作 vue3.x可以檢測到數組內部數據的變化

 

如果還不熟悉Vue3響應原理的用法,Vue3響應原理響應式原理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM