Vue3編譯階段匯總:
核心包與工具:
編譯流程:
模式差異:
總結:
② 原來 vue3 文件編譯是這樣工作的!看完後更懂vue3了
理解Vue3文件編譯過程的關鍵在於熟悉vue-loader和@vitejs/plugin-vue的工作機制。以@vitejs/plugin-vue為例,讓我們通過調試來揭示這個過程。首先,Vue源代碼在App.vue文件中編寫,如設置變數msg並在template中渲染。在瀏覽器中,這些文件需要經過編譯轉換為瀏覽器能理解的js。
編譯實際發生於node環境,而不是瀏覽器端。通過調試工具如VSCode的Javascript Debug Terminal,我們可以在vite.config.ts中使用@vitejs/plugin-vue的地方設置斷點。這里,關鍵的函數是vuePlugin,它包含了buildStart和transform鉤子,分別在伺服器啟動和模塊解析時被調用。
當啟動服務,會首先調用buildStart鉤子,此時compiler變數為null,隨後通過resolveCompiler函數定位到vue/compiler-sfc庫。在transform鉤子中,我們重點關注App.vue文件的解析,這時transformMain函數會執行,它處理了template、scriptSetup(如果有setup)和styles內容。
在transformMain中,createDescriptor函數被調用,傳入App.vue的文件路徑和代碼。這個函數內部,會使用vue/compiler-sfc的parse函數,該函數接收源代碼和選項,解析出包含模板、script內容以及可能的style內容的SFCDescriptor對象。
通過這些步驟,Vue文件被逐步分解成瀏覽器可識別的組件描述符,包括了HTML模板、腳本邏輯和樣式信息。這讓你更深入地理解了Vue3文件的編譯過程,使得源代碼和瀏覽器之間的轉換過程更加清晰。