vue3的官方文档中并没有提及render函数以及createVNode的疑问?-灵析社区

生成头像

很多组件库包括我自己在封装命令式的组件时,都会用到render函数和createVNode函数。 但是vue3的官方文档中并没有提及render函数(注意是函数,不是渲染选项中的render)以及createVNode,以至于自己每次在使用时,都会纠结:到底使用createApp().mount()更合理还是继续使用render配合createVNode(或者h)更合理?从语义的角度出发,我倾向于使用render的方式,但render确实没有在官方文档中提及,只是从源码中得知的,这样用真的合适吗?

阅读量:14

点赞量:0

问AI
阁下是在说这种用法吗。 // 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://link.segmentfault.com/?enc=IIlBOcCgCUuX2jKcZduB1Q%3D%3D.m0G9fjUayfSHXc6XrGOFiJtAh7dpf%2BfJqUOF7%2FGJHFDq7i6Uj7t%2BQBkhg0Z2GrbgIhcXq9ppA702cAE1iu0dEA%3D%3D)可能也算是有吧。 那么你都看到这个函数了,想必也是看过源码了: "https://github.com/vuejs/core/blob/main/packages/runtime-core/src/renderer.ts#L2355C7-L2355C7" (https://link.segmentfault.com/?enc=fWSOy9Jm9hDRikKp%2BLnbXQ%3D%3D.74Oqj7wp6o3tqPoV5RNsnAVbErd4PCtJf9Q57xX8GNfIa9pfMQZN0aR5upHRzKMoiCkebnOqT7%2BEE59hFpzie4xGvKff3hcM5ydDbRJ6VXsDVZUSy%2FTPZ6l7dt5muOVx) "https://github.com/vuejs/core/blob/main/packages/runtime-core/src/apiCreateApp.ts#L348C48-L348C48" (https://link.segmentfault.com/?enc=hZ9I7DPg2g1quNjD8zPc2g%3D%3D.wsestICuq%2F0qxsFsQQK1aQYQ%2FIC5ATyrf2ZCjgZLozoY1KRDc8QksJate9%2FRdDTp%2FId%2BSMRJ0UmXNHnDYo0dW9G3VkAgF5cErI3L7%2B5FjXsg6iliFBlYiYdgmXpbycpyFyQsd8sJKUJUCnPIdaevZg%3D%3D) render和createApp的关系,备注里有说render是low-level api。 如果使用只是考虑语义,根应用怎么说createApp中的App也更有语义。如果考虑SSR,可能还不能单纯的用render。 所以现在还会纠结吗