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