vue3的官方文档中并没有提及render函数以及createVNode的疑问?
很多组件库包括我自己在封装命令式的组件时,都会用到render函数和createVNode函数。
但是vue3的官方文档中并没有提及render函数(注意是函数,不是渲染选项中的render)以及createVNode,以至于自己每次在使用时,都会纠结:到底使用createApp().mount()更合理还是继续使用render配合createVNode(或者h)更合理?从语义的角度出发,我倾向于使用render的方式,但render确实没有在官方文档中提及,只是从源码中得知的,这样用真的合适吗?
阁下是在说这种用法吗。
// createApp(App).mount('#app')
render(createVNode(App), document.querySelector('#app'))
要说好不好使,肯定是好使的(至少CSR是OK的)。但是区别也是明显的,render没有返回值,不像createApp可以返回一个app实例,可以做一些全局的配置,可以做一些组件的注册。
官方文档到底有没有render的描述呢,这里https://vuejs.org/api/custom-renderer.html#createrenderer可能也算是有吧。
那么你都看到这个函数了,想必也是看过源码了:https://github.com/vuejs/core/blob/main/packages/runtime-core/src/renderer.ts#L2355C7-L2355C7
https://github.com/vuejs/core/blob/main/packages/runtime-core/src/apiCreateApp.ts#L348C48-L348C48
render和createApp的关系,备注里有说render是low-level api。
如果使用只是考虑语义,根应用怎么说createApp中的App也更有语义。如果考虑SSR,可能还不能单纯的用render。
所以现在还会纠结吗
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容