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