import { createApp, defineComponent } from 'chibivue'const App = defineComponent({ template: ` <!-- this is header. --> <header>header</header> <!-- this is main. main content is here! --> <main>main</main> <!-- this is footer --> <footer>footer</footer>`,})const app = createApp(App)app.mount('#app')
實作註釋
目標開發者介面
無需進一步解釋。
AST 和解析器的實作
關於如何實作註釋,乍一看,似乎我們可以在解析時簡單地忽略它。
然而,在 Vue 中,模板中編寫的註釋會按原樣作為 HTML 輸出。
換句話說,註釋也需要被渲染,所以需要在 VNode 上有一個表示,編譯器也需要輸出該程式碼。 此外,還需要一個產生註釋節點的操作。
首先,讓我們實作 AST 和解析器。
AST
解析器
現在,讓我們拋出一個錯誤。
程式碼產生
向 runtime-core 加入表示 Comment 的 VNode。
實作一個名為 createCommentVNode 的函式並將其作為輔助函式公開。
在 codegen 中,產生呼叫 createCommentVNode 的程式碼。
渲染
讓我們實作渲染器。
像往常一樣,在 patch 中分支 Comment 的情況,並在掛載時產生註釋。
關於 patch,由於這次是靜態的,我不會做任何特殊的事情。(在程式碼中,它只是設定為按原樣分配。)
好了,你現在應該已經實作了註釋。讓我們檢查實際操作!
到此為止的原始碼:GitHub