vue3 瀏覽器怎麼除錯 Vue 3 原始碼導讀

2021-10-18 13:52:54 字數 2236 閱讀 6515

5號凌晨,尤雨溪公布了 vue 3 源**。

話不多說,我們趁熱對 vue 3 原始碼進行一些簡要的分析。

如果你還沒有閱讀過 composition api rfc,可能無法完全看懂下面的內容。

相容性目前打包後的**是 es2015+,不支援 ie 11。

對 typescript 的使用

目前的** 98% 以上使用 typescript 編寫。

如果你還沒有學習 typescript,請盡快學習,否則可能看不懂原始碼。

另外有件事情說出來可能會讓你非常驚訝,vue 3 的源**完全沒有使用 class 關鍵字!(只在測試**和示例**裡用到了 class 關鍵字)

什麼時候發正式版

目前 vue 3 處於 pre-alpha 版本。後面應該還會有 alpha、beta 等版本。

根據 vue 官方時間表,至少要等到 2020 年第一季度才有可能發布 3.0 正式版。

**結構

**倉庫中有個 packages 目錄,裡面是 vue 3 的主要功能的實現,包括

可以看出,新的 vue **倉庫是模組化的。接下來我們逐一來看看每個模組暴露的 api。

@vue/runtime-core 模組

大部分 vue 開發者應該不會用到這個模組,因為它是專門用於自定義 renderer 的。

使用方法示例:

@vue/runtime-dom 模組

@vue/runtime-test 模組

這個模組的主要功能是用物件來表示 dom 樹,方便測試。並且提供了很多有用的 api 方便測試:

@vue/reactivity 模組

這是乙個極其重要的模組,它是乙個資料響應式系統。其暴露的主要 api 有 ref(資料容器)、reactive(基於 proxy 實現的響應式資料)、computed(計算資料)、effect(***) 等幾部分:

很明顯,這個模組就是 composition api 的核心了,其中的 ref 和 reactive 應該重點掌握。

@vue/compiler-core 模組

這個編譯器的暴露了 ast 和 basecompile 相關的 api,它能把乙個字串變成一棵 ast。

@vue/compiler-dom 模組

這個模組則基於上個模組,針對瀏覽器做了適配,如對 textarea 和 style 標籤做了特殊處理。

@vue/server-renderer 模組

目前這個模組沒有實現任何功能。

vue 模組

這個模組就是簡單的引入了 runtime 和 compiler:

閱讀建議

強烈推薦大家用假期這段時間把 vue 3 的原始碼通看一遍,因為目前的**結構清晰,而且**量相對較少。

關於閱讀順序,我的建議是

先讀 reactivity,能最快了解 vue 3 的新特性;

再讀 rumtime,理解元件和生命週期的實現;

如果還有時間再讀 compiler,理解編譯優化過程。

另外如果你想省時間,可以直接看所有 __tests__ 目錄裡的測試用例來了解 vue 3 的所有功能。目前有不到 700 個測試用例。

關注我

如何除錯Vue3原始碼?

最近想系統學習一下vue3的源 本篇內容記錄和分享一下,如何除錯vue3的源 注意,vue3的原始碼是在這個 core目錄下,一些同學別一直找目錄為vue3的資料夾,那是找不到的哈。github雖好,但是對於國內使用者,總還是有點敵意,訪問的時候經常進不去,或者很慢,我在公司訪問github時好好的...

快速了解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...