vue 2.x使用object.defineproperty,參考文件
vue 3使用proxy,物件**,參考文件
object.defineproperty的缺陷:
1)效能:通過遍歷物件的屬性進行監聽,但是屬性值也是物件就需要深度遍歷。
2)無法監聽陣列:陣列的主要操作場景是遍歷,如果每乙個元素都掛載set和get方法,會產生巨大效能消耗
3)對屬性的新增、刪除動作的檢測;
4)對陣列基於下標的修改、對於 .length修改的檢測
所以之前陣列的物件屬性修改,需要手動set來通知頁面修改了資料。如下截圖
proxy的優勢:
1)可以直接監聽物件而非屬性,並返回乙個新物件。
2)可以直接監聽陣列的變化
3)攔截方式多種多樣,速度加倍,節省記憶體開銷
tree-shaking是用來在打包編譯成 bundle 時消除 es6 module 語法中未使用到的**和模組。參考文件
vue 2.x 的全域性 api 比如 nexttick 無法被 treeshake,所以就算你沒有用到這些 api,它們還是會被打包到你的生產版本的**包裡
vue 3中,官方團隊重構了所有全域性 api 的組織方式,讓所有的 api 都支援了 treeshaking
這樣打包後的體積會更小
vue3原始碼使用ts編寫
typescript官方文件www.tslang.cn/
實際例子,基於vue3開發的小demo,三角生成器
快速了解vue(3)
上次我們說到了.vue檔案,那麼這是個什麼檔案呢?啥也不是,就是個vue元件。我們都說要元件化,模組化什麼的,這.vue檔案就是個元件,開啟看看就知道了,它這裡有兩個,主要的標籤,乙個是,乙個是。這些我們肯定看得懂,標籤裡是寫html的,頁面就是由這許許多多的元件拼出來的,就像拼圖似的,想要修改頁面...
vue3學習筆記
vue3 1.context.emit update xx props.xx 可 v model xx更新xx的值 個人記憶,雙向繫結 需要雙向改變的值 代替 vue2 sync 2.元件上繫結的事件預設是繫結第一層,可使用inheritattrs false 取消預設,在需要繼承的屬性的標籤使用v...
vue3學習總結
v model 2.x語法 title.sync oldvalue childcomponent this emit update title newvalue 3.x語法v model title oldvalue childcomponent 所有v model不到引數,一定要改變道具和事件名稱...