最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3.0的優(yōu)化總結

 更新時間:2020年10月16日 08:27:26   作者:小磊哥er  
在本篇文章里小編給大家整理的是一篇關于Vue3.0的優(yōu)化總結內(nèi)容,有需要的朋友們可以學習下。

1.源碼優(yōu)化:

a.使用monorepo來管理源碼

  • Vue.js 2.x 的源碼托管在 src 目錄,然后依據(jù)功能拆分出了 compiler(模板編譯的相關代碼)、core(與平臺無關的通用運行時代碼)、platforms(平臺專有代碼)、server(服務端渲染的相關代碼)、sfc(.vue 單文件解析相關代碼)、shared(共享工具代碼)等目錄。
  • Vue.js 3.0,整個源碼是通過 monorepo 的方式維護的,根據(jù)功能將不同的模塊拆分到 packages 目錄下面不同的子目錄中,每個 package 有各自的 API、類型定義和測試。

b.使用Typescript來開發(fā)源碼

  • Vue.js 2.x 選用 Flow 做類型檢查,來避免一些因類型問題導致的錯誤,但是 Flow 對于一些復雜場景類型的檢查,支持得并不好。
  • Vue.js 3.0 拋棄了 Flow ,使用 TypeScript 重構了整個項目。 TypeScript 提供了更好的類型檢查,能支持復雜的類型推導;由于源碼就使用 TypeScript 編寫,也省去了單獨維護 d.ts 文件的麻煩。

2.性能優(yōu)化:

a.引入tree-shaking的技術

  • tree-shaking 依賴 ES2015 模塊語法的靜態(tài)結構(即 import 和 export),通過編譯階段的靜態(tài)分析,找到?jīng)]有引入的模塊并打上標記。像我們在項目中沒有引入 Transition、KeepAlive 等不常用的組件,那么它們對應的代碼就不會打包進去。

b.移除了一些冷門的feature

  • Vue.js 3.0 兼容了 Vue.js 2.x 絕大部分的api,但還是移除了一些比較冷門的feature:如 keyCode 支持作為 v-on 的修飾符、$on,$off 和 $once 實例方法、filter過濾、內(nèi)聯(lián)模板等。

3.響應式實現(xiàn)優(yōu)化:

a.改用proxy api做數(shù)據(jù)劫持

  • Vue.js 2.x 內(nèi)部是通過 Object.defineProperty 這個 API 去劫持數(shù)據(jù)的 getter 和 setter 來實現(xiàn)響應式的。這個 API 有一些缺陷,它必須預先知道要攔截的 key 是什么,所以它并不能檢測對象屬性的添加和刪除。
  • Vue.js 3.0 使用了 Proxy API 做數(shù)據(jù)劫持,它劫持的是整個對象,自然對于對象的屬性的增加和刪除都能檢測到。

b.響應式是惰性的

  • 在 Vue.js 2.x 中,對于一個深層屬性嵌套的對象,要劫持它內(nèi)部深層次的變化,就需要遞歸遍歷這個對象,執(zhí)行 Object.defineProperty 把每一層對象數(shù)據(jù)都變成響應式的,這無疑會有很大的性能消耗。
  • 在 Vue.js 3.0 中,使用 Proxy API 并不能監(jiān)聽到對象內(nèi)部深層次的屬性變化,因此它的處理方式是在 getter 中去遞歸響應式,這樣的好處是真正訪問到的內(nèi)部屬性才會變成響應式,簡單的可以說是按需實現(xiàn)響應式,就沒有那么大的性能消耗。

4.編譯優(yōu)化:

a.生成block tree

  • Vue.js 2.x 的數(shù)據(jù)更新并觸發(fā)重新渲染的粒度是組件級的,單個組件內(nèi)部需要遍歷該組件的整個 vnode 樹。
  • Vue.js 3.0 做到了通過編譯階段對靜態(tài)模板的分析,編譯生成了 Block tree。Block tree 是一個將模版基于動態(tài)節(jié)點指令切割的嵌套區(qū)塊,每個區(qū)塊內(nèi)部的節(jié)點結構是固定的。每個區(qū)塊只需要追蹤自身包含的動態(tài)節(jié)點。

b.slot編譯優(yōu)化

  • Vue.js 2.x 中,如果有一個組件傳入了slot,那么每次父組件更新的時候,會強制使子組件update,造成性能的浪費。
  • Vue.js 3.0 優(yōu)化了slot的生成,使得非動態(tài)slot中屬性的更新只會觸發(fā)子組件的更新。動態(tài)slot指的是在slot上面使用v-if,v-for,動態(tài)slot名字等會導致slot產(chǎn)生運行時動態(tài)變化但是又無法被子組件track的操作。

c.diff算法優(yōu)化

語法api優(yōu)化

a.優(yōu)化邏輯組織

  • 使用 Vue.js 2.x 編寫組件本質(zhì)就是在編寫一個“包含了描述組件選項的對象”,可以把它稱為 Options API。我們按照 data、props、methods、computed 這些不同的選項來書寫對應的代碼。這種方式對于小型的組件可能代碼還能一目了然,但對于大型組件要修改一個邏輯點,可能就需要在單個文件中不斷上下切換和尋找邏輯代碼。
  • Vue.js 3.0 提供了一種新的 API:Composition API,它有一個很好的機制去解決這樣的問題,就是將某個邏輯關注點相關的代碼全都放在一個函數(shù)里,這樣在修改一個邏輯時,只需要改那一塊的代碼了。

b.優(yōu)化邏輯復用

  • 在 Vue.js 2.x 中,我們一般會用 mixins 去復用邏輯。當抽離并引用了大量的mixins,你就會發(fā)現(xiàn)兩個不可避免的問題:命名沖突和數(shù)據(jù)來源不清晰。
  • Vue.js 3.0 設計的 Composition API,在邏輯復用方面就會很有優(yōu)勢了。

以上就是Vue3.0的優(yōu)化總結的詳細內(nèi)容,更多關于Vue3.0的優(yōu)化詳解的資料請關注腳本之家其它相關文章!

相關文章

  • antd design table更改某行數(shù)據(jù)的樣式操作

    antd design table更改某行數(shù)據(jù)的樣式操作

    這篇文章主要介紹了antd design table更改某行數(shù)據(jù)的樣式操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vue組件實現(xiàn)彈出框點擊顯示隱藏效果

    vue組件實現(xiàn)彈出框點擊顯示隱藏效果

    這篇文章主要為大家詳細介紹了vue組件實現(xiàn)彈出框點擊顯示隱藏,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Vue.use與Vue.prototype的區(qū)別及說明

    Vue.use與Vue.prototype的區(qū)別及說明

    這篇文章主要介紹了Vue.use與Vue.prototype的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 解決vue 路由變化頁面數(shù)據(jù)不刷新的問題

    解決vue 路由變化頁面數(shù)據(jù)不刷新的問題

    下面小編就為大家分享一篇解決vue 路由變化頁面數(shù)據(jù)不刷新的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue?3?進階用法之異步組件

    Vue?3?進階用法之異步組件

    為了解決加載組件中出現(xiàn)的報錯、超時、狀態(tài)展示等問題,可以使用?Vue?3?提供的異步組件(Async?Components),它對于加載過程做了更細致的控制,這篇文章主要介紹了Vue?3?進階用法之異步組件,需要的朋友可以參考下
    2024-04-04
  • vue實現(xiàn)前端拖拽div位置交換的方法詳解

    vue實現(xiàn)前端拖拽div位置交換的方法詳解

    這篇文章主要介紹了如何使用Vue技術實現(xiàn)一個簡單的備忘錄應用,包括添加條目和拖拽條目兩個功能,文章還詳細解釋了如何使用Vue的draggable屬性和JavaScript獲取同級元素節(jié)點的方法,需要的朋友可以參考下
    2025-01-01
  • Vue.js 中 axios 跨域訪問錯誤問題及解決方法

    Vue.js 中 axios 跨域訪問錯誤問題及解決方法

    這篇文章主要介紹了Vue.js 中 axios 跨域訪問錯誤問題及解決方法,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-11-11
  • 基于Vue實現(xiàn)支持按周切換的日歷

    基于Vue實現(xiàn)支持按周切換的日歷

    這篇文章主要為大家詳細介紹了基于Vue實現(xiàn)支持按周切換的日歷,根據(jù)實際開發(fā)情況按每年、每月、每周進行切換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Vue表單數(shù)據(jù)修改與刪除功能實現(xiàn)

    Vue表單數(shù)據(jù)修改與刪除功能實現(xiàn)

    本文通過實例代碼介紹了Vue表單數(shù)據(jù)修改與刪除功能實現(xiàn),結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友跟隨小編一起看看吧
    2023-10-10
  • vscode搭建vue環(huán)境完整圖文教程(適合新手小白)

    vscode搭建vue環(huán)境完整圖文教程(適合新手小白)

    Vue框架的優(yōu)秀設計和強大的生態(tài)系統(tǒng)成為了越來越多開發(fā)者選擇Vue的原因,在實際項目過程中一個高效的開發(fā)環(huán)境能夠大大提高開發(fā)效率,這篇文章主要給大家介紹了關于vscode搭建vue環(huán)境的相關資料,需要的朋友可以參考下
    2023-10-10

最新評論

都安| 老河口市| 集贤县| 周宁县| 晋江市| 资中县| 南澳县| 德保县| 德保县| 太原市| 宁晋县| 威信县| 鹿邑县| 和龙市| 肇源县| 彭山县| 高邮市| 桂林市| 北安市| 廉江市| 怀来县| 贵州省| 庆元县| 惠来县| 资中县| 柳河县| 武宁县| 洛阳市| 新兴县| 牡丹江市| 黄浦区| 邯郸市| 西华县| 南涧| 灵丘县| 南川市| 岳阳市| 江陵县| 天峻县| 独山县| 吴川市|